понедельник, 22 июня 2020 г.

Swift, Structures, Methods

Online Swift Playground 

//Structures (Value type)
struct Person {
    private var name: String
    private var age: Int

    // var name: String = "Ivan Ivanov"
    // var age: Int = 32

    // private init() {
    //     self.name = "Ivan Ivanov"
    //     self.age = 32
    // }

    init(name: String = "Ivan Ivanov", age: Int = 32) {
        self.name = name
        self.age = age
    }

    mutating func clear(){
        self.name = ""
        self.age = 0
    }

    static func clear(person: inout Self){
        person.name = ""
        person.age = 0
    }

    func isEmpty() -> Bool{
        if self.name == "" && self.age == 0 {
            return true
        } else {
            return false
        }
    }

    static func update(person: Self) -> Self{
        let newPerson = Person(name: person.name, age: person.age + 1)
        return newPerson
    }
}

var p1 = Person()
print(p1)
Person.clear(person: &p1)
print(p1)
p1 = Person(name: "Petr Petrov")
print(p1)
p1 = Person(age: 42)
print(p1)
p1 = Person(name: "Petr Petrov", age: 42)
print(p1)
var p2 = Person.update(person: p1)
print(p2)
p2.clear()
print(p2.isEmpty())

extension Person {
    // init(name: String, age: Int) {
    //     self.name = name
    //     self.age = age
    // }

    static func defPerson() -> Self{
        let defPerson = Person(name: "Ivan Ivanov", age: 32)
        return defPerson
    }
}

var p3 = Person.defPerson()
print(p3)

Комментариев нет:

Отправить комментарий