gpt4 book ai didi

java - Kotlin 中构造函数引用的目的是什么

转载 作者:行者123 更新时间:2023-12-01 19:30:04 27 4
gpt4 key购买 nike

我正在阅读《Kotlin in action》一书,我问自己“使用构造函数引用创建类的实例”的目的是什么(如果有人感兴趣并且家里有这本书,请参阅第 112 页)。

这是书中的代码示例:

data class Person(val name: String, val age: Int)

val createPerson = ::Person
val p = createPerson("Alice", 29)

println(p) // Person(name=Alice, age=29)

我认为它看起来像一个工厂方法调用,但我不认为这是这里方法引用的(唯一)目的。

最佳答案

以这种方式引用构造函数就像任何其他函数引用一样。它具有输入(参数)和返回值(类的新实例)。您可以将其传递给具有函数参数或某种工厂的高阶函数。

例如:

class MessageWrapper(val message: String)

val someStrings = listOf("Hello world")

您可以使用 lambda 将列表转换为具有如下包装类型:

val someMessages: List<MessageWrapper> = someStrings.map { MessageWrapper(it) }

但是通过直接传递构造函数来跳过将函数包装在另一个函数中可能更清楚。

val someMessages: List<MessageWrapper> = someStrings.map(::MessageWrapper)

不过,函数和参数的清晰度改进比构造函数更明显。它还可以通过避免嵌套 lambda 来帮助避免影子。

关于java - Kotlin 中构造函数引用的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60028859/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com