在 Kotlin 中将 StringBuilder::append 作为参数传递
Passing StringBuilder::append as argument in Kotlin
我正在使用 BIP39 plugin 为 Java 创建助记符。
所以我已经将(大部分是 IDEA 所做的)this Java code 转换为 Kotlin 语法中的函数,如下所示:
fun mnemonicBuilder(): String {
val sb = StringBuilder()
val entropy = ByteArray(Words.TWELVE.byteLength())
SecureRandom().nextBytes(entropy)
MnemonicGenerator(English.INSTANCE)
.createMnemonic(entropy, sb::append)
return sb.toString()
}
IntelliJ IDEA 一直告诉我“None 可以使用提供的参数调用以下函数。”对于 sb::append.
我的问题是 .createMnemonic requires the second argument to have no return value (given by Target interface) 但所有附加程序 return StringBuilder 作为一个值。
拜托,有人可以帮助我吗?
确实,参数签名不匹配。您可以使用 lambda 代替方法参考来解决它:
MnemonicGenerator(English.INSTANCE)
.createMnemonic(entropy) { sb.append(it) }
我正在使用 BIP39 plugin 为 Java 创建助记符。 所以我已经将(大部分是 IDEA 所做的)this Java code 转换为 Kotlin 语法中的函数,如下所示:
fun mnemonicBuilder(): String {
val sb = StringBuilder()
val entropy = ByteArray(Words.TWELVE.byteLength())
SecureRandom().nextBytes(entropy)
MnemonicGenerator(English.INSTANCE)
.createMnemonic(entropy, sb::append)
return sb.toString()
}
IntelliJ IDEA 一直告诉我“None 可以使用提供的参数调用以下函数。”对于 sb::append.
我的问题是 .createMnemonic requires the second argument to have no return value (given by Target interface) 但所有附加程序 return StringBuilder 作为一个值。
拜托,有人可以帮助我吗?
确实,参数签名不匹配。您可以使用 lambda 代替方法参考来解决它:
MnemonicGenerator(English.INSTANCE)
.createMnemonic(entropy) { sb.append(it) }