Kotlin:我如何将谓词传递给CharSequence.any()函数?

bar*_*ara 9 kotlin

我正试图找出一个角色是否属于一个字符串.

var s = "abcdef"
var result = s.any('d')
Run Code Online (Sandbox Code Playgroud)

但我无法理解这种语法.来自docs:

fun CharSequence.any(predicate: (Char) -> Boolean): Boolean 
Run Code Online (Sandbox Code Playgroud)

如何将谓词传递给函数?

bas*_*hor 20

完整语法:

s.any({ ch -> ch == 'd' })
Run Code Online (Sandbox Code Playgroud)

我们可以做一些简化.

首先,由于lambda参数是最后一个,我们可以将它放在括号之外,并在没有剩余参数的情况下完全省略它们.

其次,对于具有一个参数的lambda函数文字,可以省略参数声明并按it名称引用该参数.

因此,简化的等价物将是:

s.any { it == 'd' }
Run Code Online (Sandbox Code Playgroud)