swift中括号里set是什么意思?

In swift, what does set in parentheses mean?

getter 和 setter 是可以理解的,但是在按照文本教程进行操作后,我无法理解括号中的单词 'set' 在声明变量时的含义?

 private (set) var price:Double{
    get{return priceBackingValue}
    set{priceBackingValue=max(1,newValue)}
}

在变量范围和命名约定中添加'(set)'的目的是什么?

这意味着设置变量 price 的访问修饰符是私有的,因为变量仍然可以像 public.[=13= 一样被访问(又名.get) ]

class Doge {
  private(set) let name = ""
  func someMethod(newName: String) {
    name = newName //This is okay because are setting the name from within the file
  }
}

在不同的文件中(注意:private 表示文件私有而不是 class!):

let myDoge = Doge()
print(myDoge.name) //This is okay as we can still access the variable outside of the file
myDoge.name = "foo" //This is NOT okay as we can't set the variable from outside the file

编辑: 更准确地提及 private 如何应用于文件而不是 class - 正如@sschale

所提到的

它基本上表明变量price只能由定义它的class设置,即它是一个私有的setter。这在您希望变量对其他 class 是 可读 ,但只能由定义它的 class 设置的情况下很方便。

class A {

  private (set) var foo = "foo" // variable can be read by other classes in the same scope, but NOT written to(!)

}

let a = A()
a.foo // fine! You can only read this one though!

而在此示例中,其他 class 根本无法访问该变量(既不可设置也不可获取)

class B {

  private var bar = "bar" // other classes have no access to this variable

}

let b = B()
b.bar // you cannot read/write this variable 

正如 sschale 在评论中指出的那样,显然将 classes 放入相同的文件中会暴露 [=24= 的私有 members/properties ] 给同一文件中的其他人,因此如果您将多个 class 放入文件中,请考虑到这一点。