ที่จริงแล้วอธิบายไว้ก่อนโค้ด:
นอกจากคุณสมบัติง่ายๆที่เก็บไว้แล้วคุณสมบัติยังมี getter และ setter
class EquilateralTriangle: NamedShape {
...
เมื่อคลาสอื่นต้องการรับตัวแปรขอบเขตนั้นพวกเขาจะทำสิ่งนี้:
let someVar = myTriangle.perimeter
... ซึ่งเรียกสิ่งนี้ว่า:
get{
return 3.0 * self.sideLength
}
และโดยพื้นฐานแล้วมันเหมือนกับว่าตัวควบคุมการโทรทำสิ่งนี้:
let someVar = 3.0 * myTriangle.sideLength
เมื่อคุณตั้งค่าตัวแปรจากวัตถุอื่นจะมีลักษณะดังนี้:
myTriangle.perimeter = 100
ซึ่งเรียกใช้รหัสในset{}
บล็อก:
set {
sideLength = newValue / 3.0
}
และเหมือนกับว่าคลาสที่ตั้งค่าตัวแปรได้ทำสิ่งนี้:
myTriangle.sideLength = 100/3.0
มันเป็นเพียงเพื่อความสะดวกเท่านั้น - คุณสามารถเรียกสิ่งนี้จากรหัสอื่นได้โดยไม่ต้องหารด้วยหรือคูณด้วย 3 ตลอดเวลาเพราะทำเสร็จแล้วก่อนตั้งค่าตัวแปรและก่อนที่คุณจะได้รับตัวแปร
ใน Swift เราสามารถมีคุณสมบัติที่คำนวณเมื่อได้รับและสามารถทำบางอย่างเมื่อตั้งค่าได้ เราสามารถทำได้ใน Objective-C เช่นกัน:
@property (nonatomic) double perimeter;
- (double)perimeter
{
return self.sideLength * 3.0;
}
- (void)setPerimeter:(double)perimeter
{
self.perimeter = perimeter;
self.sideLength = perimeter / 3.0;
}