Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scala worksheet does not evaluate object in IntelliJ IDEA 2016.2

This very simple worksheet content demonstrates the issue:

object Test {
 println("This does not print!")
  add(5, 6)
}

println("This however prints!")
add(5, 6)

def add(a: Int, b: Int): Int = a + b

Results from the above worksheet content are:

defined module Test

This however prints!
res0: Unit = ()
res1: Int = 11

add: add[](val a: Int,val b: Int) => Int

Based on JetBrains official website Scala Worksheets example and every other reliable resource I've found (like Martin Odresky's own examples in Functional Programming in Scala course), I would expect the contents of object Test to execute. My software is:

  • OS X El Capitan
  • IntelliJ IDEA 2016.2
  • SBT Plugin 1.8.0
  • SBT Version 0.13.12
  • Scala Plugin 2016.2.1
  • Scala Version 2.11.8
like image 961
ddinchev Avatar asked Sep 14 '16 09:09

ddinchev


People also ask

How do I create a Scala worksheet in IntelliJ?

Right-click your project and select New|Scala Worksheet. We recommend that you create an . sc file in the src directory to avoid problems with code highlighting. In the New Scala Worksheet window, type the name of the file and click OK.

How do I add Scala files to IntelliJ?

To install Scala plugin, press Ctrl+Alt+S , open the Plugins page, browse repositories to locate the Scala plugin, click Install and restart IntelliJ IDEA. Now you can successfully check out from VCS, create, or import Scala projects.

What is Scala worksheet?

A worksheet is a Scala file that is evaluated on save, and the result of each expression is shown in a column to the right of your program. Worksheets are like a REPL session on steroids, and enjoy 1st class editor support: completion, hyperlinking, interactive errors-as-you-type, etc. Worksheet use the extension .


2 Answers

I was able to evaluate the Scala work sheet by changing the Scala worksheet settings.

  • change run type to plain (original it was REPL)

You can get to settings by clicking the settings icon on the Scala worksheet.

like image 66
Smalltalkguy Avatar answered Oct 29 '22 10:10

Smalltalkguy


I think this is what you want:

object Test {
  println("This does not print!") 
  add(5, 6)

  println("This however prints!")
  add(5, 6)

  def add(a: Int, b: Int): Int = a + b
}

How the worksheet works is, that if you define an object and nothing defined outside the object scope, it will execute it as Test extends App. Which is what the intellij page displays

If you have any statement outside the object scope, it is then treated as any other object and compiler will initialize it like anything else. This is what you are experiencing.

like image 26
Jatin Avatar answered Oct 29 '22 11:10

Jatin