如何从特征访问函数?
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 大小写,这意味着第一个字母是大写的,而不是小写的。
我是 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 大小写,这意味着第一个字母是大写的,而不是小写的。