我对scala非常陌生,并且尝试将scala代码转换为Kotlin,这只是一种让我头脑清醒的方法。
其中一个问题是将scala函数转换为Kotlin函数。
def changeXToDigit(value:String): String = {
value.map {
case 'X' => random.nextInt(10).toString
case letter => letter
}.mkString
}我知道在科特林没有类似的mkString,但我想
fun changeXToDigit(value: String):String = {
value.map { it ->
when(it) {
'X' -> random.nextInt(10).toString
else -> it
}
}可能有用,但是IntelliJ抱怨它,我有点被错误弄糊涂了。
Error:(11, 45) Kotlin: Inferred type is a function type, but a non-function type String was expected. Use either '= ...' or '{ ... }', but not both.发布于 2017-11-04 21:35:51
首先,要么写
fun changeXToDigit(value: String): String = // no curly braces或
fun changeXToDigit(value: String): String { // no equalsKotlin将= { }理解为定义和返回闭包,而不仅仅是像Scala那样分组表达式。这就是为什么错误消息说“推断类型是函数类型”的原因。
接下来,Scala的.mkString()与Kotlin的.joinToString()类似,尽管Scala的默认分隔符是"",Kotlin的默认分隔符是", "。
https://stackoverflow.com/questions/47115518
复制相似问题