[問題] 一個語法請教

看板MacDev作者 (marki)時間8年前 (2016/11/02 14:47), 編輯推噓2(208)
留言10則, 4人參與, 最新討論串1/1
最近在看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

11/02 18:54, , 1F
他不是繼承,而是定義變數型態
11/02 18:54, 1F

11/02 18:54, , 2F
另外struct是不能繼承的
11/02 18:54, 2F

11/02 21:54, , 3F
宣告的類別或結構也算是一種型態。
11/02 21:54, 3F

11/02 21:55, , 4F
意思上就是你傳入的東西就必須是這個class或是struct實體
11/02 21:55, 4F

11/03 12:36, , 5F
改成class應該也可以吧
11/03 12:36, 5F

11/04 00:15, , 6F
定義方法可以名字一樣 但參數不同 (函式也是一樣)
11/04 00:15, 6F

11/04 00:16, , 7F
所以 init() 跟 init(origin:size:) 是兩個個別獨立的
11/04 00:16, 7F

11/04 00:17, , 8F
方法(或是建構器 initializer )
11/04 00:17, 8F

11/04 00:19, , 9F
不知道這是不是你的疑問
11/04 00:19, 9F

11/04 00:26, , 10F
我好像弄錯了 問題的解答就是前面幾位推文講的那樣沒錯
11/04 00:26, 10F
文章代碼(AID): #1O6OmSkE (MacDev)
文章代碼(AID): #1O6OmSkE (MacDev)