运行 intellij ide 和 eclipse 上的 scala 类
running scala classes on intellij ide and eclipse
我最近开始使用 scala 和 intellij ide 进行编程。虽然 运行 具有 classes 或特征的工作表我刚刚被定义 class classname 。 class 中的输出是不可见的。我是 运行 scala with sbt 和 java 8.I 甚至尝试 运行 在 eclipse 上使用相同的工作表仍然得到相同的输出
abstract class Base {
def foo = 1
def bar: Int
}
class Sub extends Base {
def bar = 3
}
defined class Base
defined class Sub
IDE 中的工作表与 Scala REPL 中的工作表工作方式相同。
REPL 是如何工作的?它获取每个表达式或语句(通常是一行),对其求值并打印表达式或副作用的值。如果你定义一个 class,副作用是 class 是 compiled from Scala 到 Java 字节码并且可以使用。 REPL 通过 defined class Base
让你知道这个副作用。如果你输入一个表达式,它会将表达式从 Scala 转换为字节码,对其求值并打印结果。
如果你输入
class Foo { println("x") }
你得到 defined class Foo
。如果你现在输入
new Foo()
工作表将打印 x
(调用 Foo
的构造函数的副作用)和表达式 new Foo()
的值:res0: Foo = Foo@64c8e9cd
。 res0=
部分通知您 REPL 自动执行的一件事 - 它将表达式分配给一个新的唯一变量 res0
以便您稍后可以使用它。
现在,为什么无法按预期打印 bar=3
?这意味着您希望工作表将 class 的某种定义打印到输出中。这意味着将编译后的 Scala 代码翻译回 Scala 语言,但是在 Scala 中有很多方法可以编写相同的 class 定义!它根本无法以这种方式工作,并且在输出中再次重复您的 class 定义是没有意义的。
我最近开始使用 scala 和 intellij ide 进行编程。虽然 运行 具有 classes 或特征的工作表我刚刚被定义 class classname 。 class 中的输出是不可见的。我是 运行 scala with sbt 和 java 8.I 甚至尝试 运行 在 eclipse 上使用相同的工作表仍然得到相同的输出
abstract class Base {
def foo = 1
def bar: Int
}
class Sub extends Base {
def bar = 3
}
defined class Base
defined class Sub
IDE 中的工作表与 Scala REPL 中的工作表工作方式相同。
REPL 是如何工作的?它获取每个表达式或语句(通常是一行),对其求值并打印表达式或副作用的值。如果你定义一个 class,副作用是 class 是 compiled from Scala 到 Java 字节码并且可以使用。 REPL 通过 defined class Base
让你知道这个副作用。如果你输入一个表达式,它会将表达式从 Scala 转换为字节码,对其求值并打印结果。
如果你输入
class Foo { println("x") }
你得到 defined class Foo
。如果你现在输入
new Foo()
工作表将打印 x
(调用 Foo
的构造函数的副作用)和表达式 new Foo()
的值:res0: Foo = Foo@64c8e9cd
。 res0=
部分通知您 REPL 自动执行的一件事 - 它将表达式分配给一个新的唯一变量 res0
以便您稍后可以使用它。
现在,为什么无法按预期打印 bar=3
?这意味着您希望工作表将 class 的某种定义打印到输出中。这意味着将编译后的 Scala 代码翻译回 Scala 语言,但是在 Scala 中有很多方法可以编写相同的 class 定义!它根本无法以这种方式工作,并且在输出中再次重复您的 class 定义是没有意义的。