標籤:self 1.3 img span ima gre 參數 log
1.什麼是參數的內部名稱和外部名稱?
struct Color { let red, green, blue: Double init(red redColor: Double,green greenColor: Double,blue blueColor: Double) { red = redColor green = greenColor blue = blueColor }}
1.1 Color這個結構體的構造方法中提供了三個參數,其中red是第一個參數的外部名稱,redColor是第一個參數的內部名稱;同理green和blue分別是第二、三個參數的外部名稱,greenColor和blueColor分別是第二、三個參數的內部名稱。外部名稱在建立執行個體時的提示中顯示,內部名稱只能在構造方法內部使用,兩個名稱指的是同一個參數。在建立執行個體時會顯示外部名稱:
1.2 如果只有參數的內部名稱,沒有外部名稱,編譯器會自動為參數建立一個和內部名稱相同的外部名稱。看執行個體:
這個只有一個參數的建構函式的外部參數名稱和內部參數名稱相同。
1.3 內部參數名稱可以用來區分是傳入的參數還是執行個體的屬性,也可以用self來區分
struct Color { let red, green, blue: Double init(RED redColor: Double,GREEN greenColor: Double,BLUE blueColor: Double) { red = redColor green = greenColor blue = blueColor } init(white: Double) { red = white green = white blue = white } init(red: Double,green: Double,blue: Double) { self.red = red self.green = green self.blue = blue }}
1.4 編譯器根據外部參數名稱去檢查構造器是重載還是重名的。
1.5 如果不希望提供參數的外部名稱,可以用_顯示代替參數的外部名稱,建立執行個體的時候,編譯器會顯示參數的內部名稱。
struct Color { let red, green, blue: Double init(red redColor: Double,green greenColor: Double,blue blueColor: Double) { red = redColor green = greenColor blue = blueColor } init(white: Double) { red = white green = white blue = white } init(_ red1: Double,_ green1: Double,_ blue1: Double) { self.red = red1 self.green = green1 self.blue = blue1 } }
Swift中沒有為屬性建立帶底線的後台執行個體變數,所以在
Swift中的參數內部名稱和外部名稱