在Eclipse中创建Scala脚本文件

时间:2011-10-30 11:54:55

标签: eclipse scala scripting

我在玩Scala。我需要的只是功能定义的早午餐,但在Eclipse中我只能创建.scala文件,其中函数def必须位于对象或类中。

但我在网上看到一个Scala脚本here,它不使用对象来包装所有函数。

我当然可以使用一个对象来包装我的所有函数,但我只是想知道它是否是必需的。谢谢!

3 个答案:

答案 0 :(得分:2)

是的,在Eclipse中,您需要将所有内容包装在对象或类中。

只要将代码包装在对象中并避开Shebang,就可以在Eclipse中编辑Scala脚本。只需使用scala -i scriptName.scala -e "Main.main(args)"运行脚本(假设您path上有scala发布的“bin”文件夹)。

foo.scala:

object Main extends App {
  println ("foo")
}

运行它:

scala -i foo.scala -e "Main.main(args)"

答案 1 :(得分:2)

  

但我在网上看到一个Scala脚本,这里没有使用对象来包装所有函数。

请注意,在这种情况下,无法从其他文件调用这些函数(它们在运行时用编译器生成的名称包装在object中)。如果你“需要一个功能定义的早午餐”,这可能不是你想要的:) AFAIK,Scala IDE目前不支持脚本文件,但你可以记录功能请求here

答案 2 :(得分:1)

据我所知,不可能完全在范围之外编写函数或变量。这说 可以在类/对象定义之外写它们。你只需要将它们包裹在package object中。发生的事情基本上不是将函数/变量绑定到给定的类或对象,而是将它绑定到包。例如:

package test
package object inside {
  def hello = println("Hello from outer space!")
  class Foo {
    hello // call the function from the package
  }
}

现在,当你构建Foo时,你应该打印出“Hello from outer space!”。

如果不完全知道我在说什么,我可以想象你上面提到的脚本版本可以工作,因为脚本是在某种环境中运行的。所以想象一下加载脚本的一些类,然后将它包装到一个对象中并运行它。这意味着有点像上面那样的情况:功能仍然“属于”某个地方。