Kotlin отобразить строку в другой тип? - PullRequest
0 голосов
/ 25 октября 2018

В swift я могу сделать

"Some String".map { SomeObject($0) } 

В kotlin кажется, что строка обрабатывается как массив символов, поэтому результатом является карта каждого символа.Возможно ли получить такое же поведение, как у быстрого кода, который я разместил?

"Some String".map { SomeObject(it) } 

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Помимо использования let, run или with, вы также можете написать метод расширения:

fun String.toSomeObject() = SomeObject(this)

Затем используйте его следующим образом:

"SomeObject".toSomeObject()
0 голосов
/ 25 октября 2018

Вы можете сделать что-то подобное с помощью let:

"Some String".let { SomeObject(it) }

Если у вас есть соответствующий конструктор (например, constructor(s : String) : this(...)), вы также можете вызвать его следующим образом:

"Some String".let(::SomeObject)

run и with также работают, но обычно используются, если вы хотите вместо этого вызвать метод получателя.Использование run / with для этого будет выглядеть следующим образом:

"Some String".run { SomeObject(this) }
with ("Some String") { SomeObject(this) }

// but run / with is rather useful for things like the following (where the shown function calls are functions of SomeObject):
val x = someObject.run {
  doSomethingBefore()
  returningSomethingElse()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...