作者marki (marki)
看板MacDev
标题[问题] 一个语法请教
时间Wed Nov 2 14:47:54 2016
最近在看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://webptt.com/cn.aspx?n=bbs/MacDev/M.1478069276.A.B8E.html
1F:→ darktt: 他不是继承,而是定义变数型态 11/02 18:54
2F:→ darktt: 另外struct是不能继承的 11/02 18:54
3F:→ tkdmaf: 宣告的类别或结构也算是一种型态。 11/02 21:54
4F:→ tkdmaf: 意思上就是你传入的东西就必须是这个class或是struct实体 11/02 21:55
5F:推 ckvir: 改成class应该也可以吧 11/03 12:36
6F:推 itisjoe: 定义方法可以名字一样 但参数不同 (函式也是一样) 11/04 00:15
7F:→ itisjoe: 所以 init() 跟 init(origin:size:) 是两个个别独立的 11/04 00:16
8F:→ itisjoe: 方法(或是建构器 initializer ) 11/04 00:17
9F:→ itisjoe: 不知道这是不是你的疑问 11/04 00:19
10F:→ itisjoe: 我好像弄错了 问题的解答就是前面几位推文讲的那样没错 11/04 00:26