Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有内置的Kotlin方法将void函数应用于值?_Kotlin_Utility Method - Fatal编程技术网

是否有内置的Kotlin方法将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(

我编写此方法是为了对值应用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({ 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标准库的一部分。