首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Scala函数转换为Kotlin函数

将Scala函数转换为Kotlin函数
EN

Stack Overflow用户
提问于 2017-11-04 20:50:47
回答 1查看 1.4K关注 0票数 0

我对scala非常陌生,并且尝试将scala代码转换为Kotlin,这只是一种让我头脑清醒的方法。

其中一个问题是将scala函数转换为Kotlin函数。

代码语言:javascript
复制
def changeXToDigit(value:String): String = {
   value.map {
      case 'X' => random.nextInt(10).toString
      case letter => letter
   }.mkString
}

我知道在科特林没有类似的mkString,但我想

代码语言:javascript
复制
fun changeXToDigit(value: String):String = {
   value.map { it ->
      when(it) {
        'X' -> random.nextInt(10).toString
        else -> it
   }
}

可能有用,但是IntelliJ抱怨它,我有点被错误弄糊涂了。

代码语言:javascript
复制
Error:(11, 45) Kotlin: Inferred type is a function type, but a non-function type String was expected. Use either '= ...' or '{ ... }', but not both.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-04 21:35:51

首先,要么写

代码语言:javascript
复制
fun changeXToDigit(value: String): String = // no curly braces

代码语言:javascript
复制
fun changeXToDigit(value: String): String { // no equals

Kotlin将= { }理解为定义和返回闭包,而不仅仅是像Scala那样分组表达式。这就是为什么错误消息说“推断类型是函数类型”的原因。

接下来,Scala的.mkString()与Kotlin的.joinToString()类似,尽管Scala的默认分隔符是"",Kotlin的默认分隔符是", "

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47115518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档