gpt4 book ai didi

kotlin - inline 关键字在 Kotlin 类构造函数中是否有效?

转载 作者:行者123 更新时间:2023-12-02 12:44:50 24 4
gpt4 key购买 nike

假设你有 2 个 Kotlin 类

class Battery(
val carbon: Any,
val zinc: Any
)
class RemoteControl(
/* inline */ val battery: Battery,
val buttons: Any
)
注意注释掉的 inline RemoteControl 中的关键字.取消注释它不会在 Intellij 中产生错误。
这是有效的 Kotlin 代码吗?它有什么作用?
我的期望是它相当于
class RemoteControl(
val carbon: Any,
val zinc: Any,
val buttons: Any
)
但它似乎没有做任何事情。
我使用的是 Kotlin 1.3.72 和 Android Studio 4.0.1

最佳答案

inline修饰符可用于属性(也可用于主构造函数的属性):

// var property
inline var battery: Battery
get() = Battery("carbon", "zinc")
set(v) { }

// val property
inline val battery: Battery
get() = Battery("carbon", "zinc")

// primary constructor
class RemoteControl(inline val battery: Battery)
在这种情况下,所有访问器都会自动标记为内联。在调用站点,访问者是 inlined as normal functions .
将内联应用于具有 的属性后台 ,或其访问器,结果是 编译时错误 :
// error: "Inline property cannot have backing field"
inline var battery: Battery
get() = Battery("carbon", "zinc")
set(v) { field = v } // we use backing field here
还有更多 info .

关于kotlin - inline 关键字在 Kotlin 类构造函数中是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63063296/

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