是否有内置的Kotlin方法将void函数应用于值?
我编写此方法是为了对值应用void函数并返回值是否有内置的Kotlin方法将void函数应用于值?,kotlin,utility-method,Kotlin,Utility Method,我编写此方法是为了对值应用void函数并返回值 public inline fun <T> T.apply(f: (T) -> Unit): T { f(this) return this } 对这样的事情: return values.map { var other = it.toOther() doStuff(other) return other } return values.map { it.toOther().apply(
public inline fun <T> T.apply(f: (T) -> Unit): T {
f(this)
return this
}
对这样的事情:
return values.map {
var other = it.toOther()
doStuff(other)
return other
}
return values.map { it.toOther().apply({ doStuff(it) }) }
Kotlin是否已经内置了这样的语言功能或方法?我遇到了同样的问题。我的解决方案基本上与您的解决方案相同,只是有一点改进:
inline fun <T> T.apply(f: T.() -> Any): T {
this.f()
return this
}
当然,您也可以调用
doStuff(this)
我遇到了同样的问题。我的解决方案基本上与您的解决方案相同,只是有一点改进:
inline fun <T> T.apply(f: T.() -> Any): T {
this.f()
return this
}
当然,您也可以调用
doStuff(this)
应用程序位于Kotlin标准库中:请参阅此处的文档:
其方法签名:
inline fun <T> T.apply(f: T.() -> Unit): T (source)
inline fun T.apply(f:T.()->单位):T(源)
使用此值作为其接收器调用指定函数f并返回此值
应用在Kotlin标准库中:请参阅此处的文档: 其方法签名:
inline fun <T> T.apply(f: T.() -> Unit): T (source)
inline fun T.apply(f:T.()->单位):T(源)
使用此值作为其接收器调用指定函数f并返回此值
就我的教育而言,
doStuff
的重点是评估它的副作用,有点像Java8流中的peek
方法?是的,我认为它类似于peek
,但应用于对象而不是流。它还让我想起了RxJava的doOnNext()
,但同样适用于对象而不是流。而doStuff
的要点实际上取决于用户,但在我的例子中,它是向other
添加一个缓存。相关问题。您可以自由投票或启动以获取更新。apply
功能现在是Kotlin标准库的一部分。有关详细信息,请参见下面的答案。就我的教育而言,doStuff
的重点是评估它的副作用,有点像Java 8流中的peek
方法?是的,我认为它类似于peek
,但应用于对象而不是流。它还让我想起了RxJava的doOnNext()
,但同样适用于对象而不是流。而doStuff
的要点实际上取决于用户,但在我的例子中,它是向other
添加一个缓存。相关问题。您可以自由投票或启动以获取更新。apply
功能现在是Kotlin标准库的一部分。有关详细信息,请参见下面的答案。就我的教育而言,doStuff
的重点是评估它的副作用,有点像Java 8流中的peek
方法?是的,我认为它类似于peek
,但应用于对象而不是流。它还让我想起了RxJava的doOnNext()
,但同样适用于对象而不是流。而doStuff
的要点实际上取决于用户,但在我的例子中,它是向other
添加一个缓存。相关问题。您可以自由投票或启动以获取更新。apply
功能现在是Kotlin标准库的一部分。有关详细信息,请参阅下面的答案。将向M13添加一个类似的库方法:apply
函数现在是Kotlin标准库的一部分。将向M13添加一个类似的库方法:apply
函数现在是Kotlin标准库的一部分。将向M13添加一个类似的库方法:apply
函数apply
函数现在是Kotlin标准库的一部分。