如何向字符串添加属性以返回两个值,字符串本身和另一个字符串(set和get(?或剂量字符串有一些属性返回一个字符串,我可以设置一个新值?
我想要实现的目标如下:
var myString = "123"
func addFunc(s: String) -> String {
myString.property = "resultString"
return myString.property
}
let result = myString.addFunc(s: myString)
首先,要明确一点:不可能使用其他存储属性扩展结构或类。
对于类,可以使用目标 c 运行时功能(如关联对象(来解决此问题。如果您搜索objc_setAssociatedObject
和/或objc_getAssociatedObject
,您会发现很多
对于结构(在您的情况下,String
是结构(,不支持这样做,因为它们一直在移动和复制,因此它们迟早会失去与其关联值的关系。
您可以使用结构来执行所需的操作。
struct MyString {
var myString: String
var property: String
}
您可以根据需要创建吸气器和二传手。
编辑:
可以对您想要的内容进行扩展,但我强烈建议不要这样做。在您的情况下更改 String 的实现不是一件好事。
最好有一个结构。
我不确定你在计划什么,但你可以尝试使用Tuple
类型的扩展变量。这样:
extension String {
var myProperty2: (String, String) {
get {
return (self, "something you want")
} set { }
}
}
用法:
var hello = "Hello!"
hello.myProperty2 = (hello, "Hi!")
print(hello.myProperty2)