您好我有这个scala对象,我想使用带scala的shell在sample
函数中运行代码:
object SampleObject{
def sample(){
val data = Array(1, 2, 3, 4, 5)
data.foreach(println(_))
}
}
我做的是这个
scala> :load /Users/username/Desktop/Cli.scala
Loading /Users/username/Desktop/Cli.scala...
defined object SampleObject
但如果我跑这个
scala> SampleObject.sample
这就是我的意思
<console>:92: error: value sample is not a member of object SampleObject
SampleObject.sample
为什么会这样?命令有问题:load和-i,就像你无法访问对象成员一样。有什么建议让它起作用吗?
UPDATE1: 如果我运行上面的代码既不执行加载也不运行-i,而是直接在shell上编写,一切正常。
答案 0 :(得分:3)
问题是支撑前的换行符。您可以通过以下两种方式解决此问题:
:paste
代替:load
您的原始问题是object SampleObject{
,但事实证明,这不是您的实际文件所包含的内容,正如您的更新2所示。由于:load
逐行工作,就像你在REPL上输入一样,当翻译人员看到
object Cli它完成时:这是完全有效的,完整的Scala声明一个(不是非常有趣)的对象。下一行的左括号将开始一个与您刚刚定义的对象无关的新块。
这是一个交互式REPL与编译器行为不同的区域,它允许在大括号之前有一个换行符(详见the Scala language specification)。