Подтвердить что ты не робот

Распечатайте рабочий лист Scala в интерактивном режиме в IntelliJ

По какой-то причине промежуточные значения не распечатываются в консоли REPL (правая сторона рабочего листа)

Например, это то, что у меня есть:

object test {
  val obj = new MyObject(1)
  obj.value 
}

class MyObject(x: Int) {
  def value = x
}

В результатах REPL я получаю только следующее:

defined module test
.
.
.
defined class MyObject

Однако я не получаю никаких промежуточных результатов, например, когда я оцениваю x.value

Я бы ожидал чего-то вроде:

> [email protected]
> 1 

после x.value

Любая причина, по которой это не распечатывается?

4b9b3361

Ответ 1

Что в итоге получилось для меня в этом случае (и это может быть особенно важно для IntelliJ 14, так как я видел, как он работает в Eclipse), я добавил класс внутри блока объектов, например:

object test {
  val obj = new MyObject(1)
  obj.value 

  class MyObject(x: Int) {
   def value = x
  }
}

Это вынудило экземпляр REPL внутри рабочего листа автоматически определить результат и распечатать его с правой стороны.

Ответ 2

Чтобы он работал так, как в Eclipse, включите режим совместимости с eclipse. Это работало для меня с использованием IntelliJ IDEA 2016.

Preferences > Language & Frameworks > Scala > Worksheet

Затем установите флажок Use "eclipse compatibility" mode.

Ответ 3

Извините, у меня нет достаточной репутации для комментариев, поэтому я должен написать здесь.

Если вы хотите получить нужный результат, возможно, вы можете попробовать это.

scala> :paste
// Entering paste mode (ctrl-D to finish)

object test {
  val obj = new MyObject(1)
  println(obj.value) 
}

class MyObject(x: Int) {
  def value = x
}


// Exiting paste mode, now interpreting.

defined object test
defined class MyObject

scala> test.obj
1
res4: MyObject = [email protected]

когда вы вставляете код, test и MyObject не инициализируются, вы не можете получить какую-либо печать. test.obj приведет к инициализации теста, так что obj, в тоже время, obj.value также получит оценку. Однако, если вы ничего не знаете (например, печать), это просто чистое выражение.

Ответ 4

Просто небольшая модификация в вышеприведенном ответе, поскольку я не нашел опцию Preference в моей Intellij Idea 16 (идея-IC-163.12024.16). Просто включите режим совместимости с затмением, как показано ниже:

Файл > Настройки > Язык и рамки > Scala > Рабочий лист