Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function Kotlin:获取对类的函数的引用';实例_Function_Kotlin - Fatal编程技术网

Function Kotlin:获取对类的函数的引用';实例

Function Kotlin:获取对类的函数的引用';实例,function,kotlin,Function,Kotlin,我试图将一个函数传递给Kotlin中的一个函数,这是我的代码 fun validateValueWithFunc(value: String, parsefun: (CharSequence) -> Boolean, type: String){ if(parsefun(value)) print("Valid ${type}") else print("Invalid ${type}") } 我传递的函数来自正则表达式类“contains

我试图将一个函数传递给Kotlin中的一个函数,这是我的代码

fun validateValueWithFunc(value: String, parsefun: (CharSequence) -> Boolean, type: String){
    if(parsefun(value))
        print("Valid ${type}")
    else
        print("Invalid ${type}")
}
我传递的函数来自正则表达式类“containsMatchIn”

我知道::function reference操作符,但我不知道如何在这种情况下使用它,Kotlin 1.0.4中的

(左侧有表达式的)还不可用,您只能

此功能具有以下语法:

val f = Regex.fromLiteral("some regex")::containsMatchIn
在此之前,您可以使用lambda语法表达相同的内容。为此,应将
Regex
捕获到单个参数lambda函数中:

val regex = Regex.fromLiteral("some regex")
val f = { s: CharSequence -> regex.containsMatchIn(s) } // (CharSequence) -> Boolean
一条等效线,使用:


这里,
with
Regex
绑定到外部大括号中,并返回外部大括号中的最后一个也是唯一一个表达式,即内部大括号定义的lambda函数。另请参见:。

也许可以更清楚地说明,在绑定的可调用引用可用之前,您正在使用lamda“包装”函数以捕获实例。初学者很难掌握语法的第一个版本。值得注意的是,
regex.containsMatchIn(s)
也可以表示为
regex in s
val regex = Regex.fromLiteral("some regex")
val f = { s: CharSequence -> regex.containsMatchIn(s) } // (CharSequence) -> Boolean
val f = with(Regex.fromLiteral("some regex")) { { s: CharSequence -> containsMatchIn(s) } }