看板 MacDev 關於我們 聯絡資訊
最近在看Swift 起步走 想請問一個範例 http://goo.gl/hfbTn1 這個網站中的 值型別的建構器委任 章節的範例 ======================================================================== // 定義兩個示範需要用到的結構 struct Size { var width = 0.0, height = 0.0 } struct Point { var x = 0.0, y = 0.0 } // 定義一個方形的結構 Rect struct Rect { // 使用上面兩個定義的結構來儲存這個方形的原點及尺寸 var origin = Point() var size = Size() // 三個建構器 init() {} init(origin: Point, size: Size) { self.origin = origin self.size = size } init(center: Point, size: Size) { let originX = center.x - (size.width / 2) let originY = center.y - (size.height / 2) self.init( origin: Point(x: originX, y: originY), size: size) } } ========================================================================= 第二個建構器 init(origin: Point, size: Size){ ...... } 我可以理解 例如 init(origin: Int, size: Int) 這樣的意思 我想請問這個建構器寫origin: Point 好像也不是繼承 這個是什麼意思啊? 另外 我發現我把struct 改成 class就不行了誒 不好意思 我知道這個可能是很基本的問題 可是真的看不懂 拜託大家了 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.98.177.62 ※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1478069276.A.B8E.html
darktt: 他不是繼承,而是定義變數型態 11/02 18:54
darktt: 另外struct是不能繼承的 11/02 18:54
tkdmaf: 宣告的類別或結構也算是一種型態。 11/02 21:54
tkdmaf: 意思上就是你傳入的東西就必須是這個class或是struct實體 11/02 21:55
ckvir: 改成class應該也可以吧 11/03 12:36
itisjoe: 定義方法可以名字一樣 但參數不同 (函式也是一樣) 11/04 00:15
itisjoe: 所以 init() 跟 init(origin:size:) 是兩個個別獨立的 11/04 00:16
itisjoe: 方法(或是建構器 initializer ) 11/04 00:17
itisjoe: 不知道這是不是你的疑問 11/04 00:19
itisjoe: 我好像弄錯了 問題的解答就是前面幾位推文講的那樣沒錯 11/04 00:26