我正在操场上试用私人(套装(。
比如说,一个叫Slippin Jimmy的人,他的年龄属性不应该在人类之外操作,因为年龄变量有一个私有(集(前缀。
我不能直接给age属性赋值,但我仍然可以操作age,比如加1,减1,乘以它,我想这是因为没有新的变量来存储数据,无论我如何操作age变量,它仍然保持来自person类的相同值,对吧?
那么,在这种情况下,+1、-1、*1和=1之间有什么不同呢?
class person {
var name = "Slippin Jimmy"
private(set) var age = 18
func getOlder() {
age = age + 1
print(age)
}
}
var saul = person()
print("saul's age is (saul.age)")//saul's age is 18
saul.getOlder()//19
saul.age + 1 //20
saul.age - 1 //18
saul.age * 3 //57
//saul.age = 22//cannot assign to property: 'age' setter is inaccessible
print("saul's age is (saul.age)")//saul's age is 19
Person.age
有一个私有的setter。这意味着您不能从类外部设置age
的值。不过,您仍然可以谈论它(访问它的值(,因为它的getter不是私有的,这正是有问题的代码正在做的事情——在描述其他数字时提到它的值。所有这些都是不设置age
:值的表达式
saul.age + 1
saul.age - 1
saul.age * 3
从上到下,他们的意思是:
- 比
saul.age
多一个的值 - 比
saul.age
小一的值 - 比
saul.age
大三倍的值
你只是在谈论一些数字!:(另一方面,如果你说:
saul.age = 20
那么它的意思是";将CCD_ 7改变为20〃;,并且这是不允许的,因为CCD_ 8具有私有设置器。
附带说明:在普通Swift文件中,顶级不允许使用saul.age + 1
之类的表达式。事实上,这是为你汇编的,这表明你可能在斯威夫特游乐场。