и по умолчанию разделитель Kotlin является

нь плохо знаком с scala Kotlin и пробую свои силы в преобразовании некоторого scala-кода в Kotlin просто для того, чтобы разобраться в чем-то.

У меня возникли проблемы с преобразованием этой функции scala в Kotlin.

def changeXToDigit(value:String): String = {
   value.map {
      case 'X' => random.nextInt(10).toString
      case letter => letter
   }.mkString
}

Я знаю, что нет эквивалента mkString в Kotlin, но я понял, что-то вроде

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.
 Jon Goodwin04 нояб. 2017 г., 22:03
Интересно, что вы можете начать с Java и конвертировать в Scala с помощью плагина scala, а также конвертировать Java в Kotlin с помощью плагина Kotlin (используя IntelliJ IDEA ИЛИ Android Studio). Вы также можете вернуться назад: - Меню> Инструменты> Kotlin> Показать байт-код Kotlin. Нажмите на кнопку декомпиляции. Скопируйте код Java.
 Jasper-M04 нояб. 2017 г., 23:32
В случае с Scala вам даже не нужноmkString если вы испускаете символы из вашей функции отображения вместо сочетания строк и символов.

Ответы на вопрос(1)

Решение Вопроса

Во-первых, либо пиши

fun changeXToDigit(value: String): String = // no curly braces

или же

fun changeXToDigit(value: String): String { // no equals

как понимает Котлин= { } как определение и возврат замыкания, а не просто группирование выражения, как в Scala. Вот почему в сообщении об ошибке говорится, что «выведенный тип является типом функции».

Далее Скала.mkString() это как Котлин.joinToString(), хотя в Scala по умолчанию используется разделитель"" и по умолчанию разделитель Kotlin является", ".

Ваш ответ на вопрос