Swift学習ノート属性

5540 ワード

struct FixedLengthRange {
    var firstValue: Int
    let length: Int
}
var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3)

rangeOfThreeItems.firstValue = 6


class DataImporter {
    var fileName = "data.txt"
}
class DataManager {
    lazy var importer = DataImporter()
    var data = [String]()
}

let manager = DataManager()
manager.data.append("Some Data")
manager.data.append("Some Data")


struct Point{
    var x = 0.0, y = 0.0
}
struct Size {
    var width = 0.0, height = 0.0
}
struct Rect {
    var origin = Point()
    var size = Size()
    var center: Point{
        get{
            let  centerX = origin.x + (size.width / 2)
            let  centerY = origin.y + (size.height / 2)
            return Point(x: centerX, y: centerY)
        }
        set(newCenter)
        {
            origin.x = newCenter.x - (size.width / 2)
            origin.y = newCenter.y - (size.height / 2)
        }
    }
}
var square = Rect(origin: Point(x: 0.0, y: 0.0), size: Size(width: 10.0, height: 10.0))

let initialSquareCenter = square.center
square.center = Point(x: 15.0, y: 15.0)

struct Cuboid {
    var width = 0.0
    var volume: Double {
        return width
    }
}

class StepCounter {
    var totalSteps: Int = 0 {
        willSet(newTotalSteps) {
            println(newTotalSteps)
        }
        didSet{
            if(totalSteps > oldValue )
            {
                println(totalSteps - oldValue)
            }
        }
    }
}

let stepCounter = StepCounter()
stepCounter.totalSteps = 200

class SomeClass {
    static var i = 100
    class var computedTypeProperty: Int {
        get{
            return 100
        }
    }
}

以上が属性の基本的な使い方で、他の言語と似ていますが、静的属性については少し定義が異なり、クラスの静的属性を定義する際に
classキーワードを追加する必要があります
属性にはget,setメソッドがあります
また、didSetとwillSetを使用して、プロパティの値を監視することもできます.