Java Kotlin:相当于Swift的属性包装器
Kotlin的等效属性包装是什么:Java Kotlin:相当于Swift的属性包装器,java,swift,kotlin,Java,Swift,Kotlin,Kotlin的等效属性包装是什么: @propertyWrapper struct Foo { var wrappedValue: String { get { return "Test } } } @Foo-var-test:String在Kotlin中,有多个选项用于向属性添加自定义行为。基本上有两个选项:自定义setter/getter和 在Kotlin,有些事情可能会有所不同: 属性是val或varval类似
@propertyWrapper
struct Foo {
var wrappedValue: String {
get {
return "Test
}
}
}
@Foo-var-test:String
在Kotlin中,有多个选项用于向属性添加自定义行为。基本上有两个选项:自定义setter/getter和
在Kotlin,有些事情可能会有所不同:
- 属性是
或val
var
类似于Java中的val
,只能分配一次,final
可以重新分配var
- 这两种类型都可以有自定义的getter
s可以有自定义设置器var
- 如果您想要一个支持字段,Kotlin会为您提供一个支持字段。只需在setter或getter中使用关键字
字段
- Kotlin属性没有隐式默认值。必须在构造函数中(或通过
块)或init
后的声明中进行初始化=
- 有些属性实际上是经过计算的,实际上不存储任何内容。在这种情况下,没有支持
,也不需要(或允许)初始值设定项字段
class Dog {
// Must have initial value, default getter and setter. Value can come from constructor.
val isNice: Boolean = true
set(value) { ... } // This produces an error, no setters on vals
// Must have initial value, default getter
var age: Int = 0
set(value) { if (value >= 0) field = value }
// Value is just computed, has no field and cannot have initial value
var ageInDogYears: Int
get() = age * 7
set(value) { age = value / 7 }
}
我不知道答案,但这个问题表明,您正在尝试将Swift应用程序移植到Kotlin,方法是将Swift术语替换为Kotlin术语。如果是这样的话,你会过得很艰难。你最终会得到糟糕的psuedo-Swift-Kotlin代码,它既不像它的Swift对应物(现在),也不是任何其他Kotlin开发人员都能识别或想要使用的好Kotlin代码。我还没有学会Swift,但快速浏览一下关于Swift属性包装器的教程,我觉得它们与Kotlin非常相似。但是,属性包装器的一些简单功能也可以在Kotlin中直接使用自定义getter和setter完成。