我可以迅速
"Some String".map { SomeObject($0) }
在kotlin中,字符串似乎被视为char数组,因此结果是每个字符的映射。是否可以得到类似的行为,例如我发布的快速代码?
"Some String".map { SomeObject(it) }
答案 0 :(得分:5)
您可以使用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()
}
答案 1 :(得分:2)
除了使用let
,run
或with
之外,您还可以编写扩展方法:
fun String.toSomeObject() = SomeObject(this)
然后按如下所示使用它:
"SomeObject".toSomeObject()