如何从特征中访问函数?

时间:2016-07-19 12:10:38

标签: scala traits function-calls

我是scala的新手,并试图使用特质" s"。我的代码看起来像这样。

trait codeHelper {
  def functionCall(x: Integer){

     def valueChecker(){

     /*code to perform the required operation*/

     }
  }
}

我从名为" valueCreator"的主要scala类中访问该特征。如下:

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

但是这段代码不起作用。我的主要课程出现错误" valueCreator"说

  

"未找到:value valueChecker"

有人可以告诉我如何从特质中访问该功能?提前感谢您的时间

1 个答案:

答案 0 :(得分:3)

您对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)
}

作为旁注,Scala中的类名是Pascal Case,意思是第一个字母是大写,而不是小写。