gpt4 book ai didi

kotlin - 了解Kotlin中的内联类

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

我试图了解Kotlin的内联类(class)

fun main(){
val password = Password("Current Password")
println(password)
println(password.password)
}

inline class Password(val password: String)

这是我根据文档编写的示例代码。现在他们说不会发生类密码的实例化。

我的输出应该是
Current Password
Current Password

但是我越来越
Password(password=Current Password)
Current Password

如果没有实例化,那么当我们尝试直接访问password变量时,我们应该将其作为通用字符串访问吗?

最佳答案

只要您不在可为空或通用的上下文中使用它,它就不会编译为对象。如果这样做,它将像原始对象一样被包装在一个对象中。

但是toString()以及其他函数和属性仍然可以像类一样使用,就像它们用于基元一样。我不知道编译代码中的确切机制,但是我猜测它们的实现方式与扩展功能相同(在JVM上,扩展功能被编译为静态方法,而“receiver”作为另一个参数)。

从您的 Angular 来看,您仍然将其与任何原始类完全相同,当它们可以为空或用作泛型时,它们具有包装器版本。但是,您还有一个好处,就是可以覆盖toString()并添加功能而无需使用扩展名。

关于kotlin - 了解Kotlin中的内联类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60601086/

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