Kotlin将字符串映射到另一种类型?

时间:2018-10-25 14:56:00

标签: kotlin

我可以迅速

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

在kotlin中,字符串似乎被视为char数组,因此结果是每个字符的映射。是否可以得到类似的行为,例如我发布的快速代码?

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

2 个答案:

答案 0 :(得分:5)

您可以使用let完成类似的操作:

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

如果您有适当的构造函数(例如constructor(s : String) : this(...)),也可以按以下方式调用它:

"Some String".let(::SomeObject)

runwith也可以工作,但是如果您想在其上调用接收者的方法,通常可以使用它们。为此使用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()
}

答案 1 :(得分:2)

除了使用letrunwith之外,您还可以编写扩展方法:

fun String.toSomeObject() = SomeObject(this)

然后按如下所示使用它:

"SomeObject".toSomeObject()