1. 程式人生 > >swift 類 結構體 作為引數 以及可變引數

swift 類 結構體 作為引數 以及可變引數

  • Class
class Person{
    var age = 22, name = "frank"

    func growolder()
    {
        self.age++ //++ 要跟住 不要亂打空格
        // 如果是var 可以在結構體內部進行修改
    }
}


func celebrationBirthday(person:Person)
{
    print("生日快樂 (\(person.name))")

    person.growolder()

}

let Frank = Person()

celebrationBirthday(Frank)

print
(Frank.age) 引數生命為var型別 class Person{ var age = 22, name = "frank" func growolder() { self.age++ //++ 要跟住 不要亂打空格 // 如果是var 可以在結構體內部進行修改 } } func celebrationBirthday(var person:Person) { print("生日快樂 (\(person.name))") person.growolder() } let Frank = Person() celebrationBirthday(Frank) print
(Frank.age) 一句話概括 如果是var 可以在結構體內部進行修改
  • struct
- 
struct Person{
    var age = 22, name = "frank"

    mutating func growolder()
    {
        self.age++
    }
    //結構體裡面的函式 要修改屬性 必須加上關鍵字 mutating
}


// 結構作為引數 傳遞給函式 當做 值傳遞, 相傳地地址 加上inout
func celebrationBirthday(inout person:Person)
{
    print("生日快樂 (\(person.name))"
) person.growolder() } var Frank = Person()//這個地方注意需要 定義為var celebrationBirthday(&Frank) print(Frank.age)

// 1.結構傳遞 是作為值傳遞 ,所以要inout處理 傳遞物件得讓編譯器知道地址
// 2.修改結構的屬性值 把結構宣告為var變數 常量不允許修改內部的屬性值

  • 可變引數
// 可變引數
func longestWord(Words : String ...) -> String
{
    var currentLongest :String?
    for word in Words
    {
        if(currentLongest?.characters.count  < word.characters.count)
        {
            currentLongest = word
        }
    }
    return currentLongest!
}


let  long = longestWord("大象", "貓", "大熊貓", "耗子")

三個點表示可變引數