[问题] 一个语法请教

楼主: marki (marki)   2016-11-02 14:47:54
最近在看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就不行了诶
不好意思 我知道这个可能是很基本的问题 可是真的看不懂
拜托大家了
谢谢
作者: darktt (小朱)   2016-11-02 18:54:00
他不是继承,而是定义变量型态另外struct是不能继承的
作者: tkdmaf (皮皮快跑)   2016-11-02 21:54:00
宣告的类别或结构也算是一种型态。意思上就是你传入的东西就必须是这个class或是struct实体
作者: ckvir (ckvir)   2016-11-03 12:36:00
改成class应该也可以吧
作者: itisjoe ( _(:3”∠)_)   2016-11-04 00:15:00
定义方法可以名字一样 但参数不同 (函式也是一样)所以 init() 跟 init(origin:size:) 是两个个别独立的方法(或是建构器 initializer )不知道这是不是你的疑问我好像弄错了 问题的解答就是前面几位推文讲的那样没错

Links booklink

Contact Us: admin [ a t ] ucptt.com