如何在scala中定义全局函数?

时间:2014-07-04 05:07:34

标签: scala playframework

我正在使用play框架,我想定义一个全局函数,我该怎么做?

首先我在SomeFunc.scala中定义函数并将其导入到我将使用它的每个文件中。

是否可以直接使用println而无需导入SomeFunc.scala

2 个答案:

答案 0 :(得分:2)

println在对象scala.Predef中定义。其成员总是在范围内,你无法添加到那个,但是由senia链接的问题说你可以通过在包对象中定义一个方法来实现相同的方法,然后在代码中可用在那个包中。

某些库使用的另一个解决方案是像Predef一样为Imports对象提供别名和快捷方式,但是必须使用通配符显式导入。例如,nscala-time就是这样做的:

import com.github.nscala_time.time.Implicits._

答案 1 :(得分:2)

是的,这是可能的,但只有全局在同一个包中,而不是绝对的全局。

package com
package object myproject {
  def myGlobalFunc(..) = ...
}

然后你就这样使用它:

package com.myproject 
object HelloWorld {
  def main(args: Array[String]) {
    myGlobalFunc(...)
  }
}