如何从特征访问函数?

How to access functions from traits?

我是 scala 的新手,正在尝试使用 trait"s"。我的代码看起来像这样。

trait codeHelper {
  def functionCall(x: Integer){

     def valueChecker(){

     /*code to perform the required operation*/

     }
  }
}

我从名为 "valueCreator" 的主 Scala class 访问特征,如下所示:

 class valueCreator() extends baseClass() with codeHelper {
    val value = valueChecker() 
 }

但是此代码不起作用。我在主 class "valueCreator" 中遇到错误,说

"not found: value valueChecker"

有人能告诉我如何从特征访问函数吗?预先感谢您的宝贵时间

您对 valueChecker 的定义在另一个方法 functionCaller 中,这称为 nested method。这意味着前一个方法是函数局部的,它只适用于 functionCaller。如果你想让它在 trait 级别可见,你需要让它成为一个单独的方法:

trait CodeHelper {
  def functionCall(x: Int) {
  }

  def valueChecker() {
     /*code to perform the required operation*/
  }
}

尽管如此,您似乎真的想打电话给 functionCaller 也许吧?

class ValueCreator extends BaseClass with CodeHelper {
    val value = functionCaller(2)
}

附带说明一下,class Scala 中的名称是 Pascal 大小写,这意味着第一个字母是大写的,而不是小写的。