我是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"
有人可以告诉我如何从特质中访问该功能?提前感谢您的时间
答案 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,意思是第一个字母是大写,而不是小写。