Merge pull request #174 from yulingtianxia/develop

update extensions
This commit is contained in:
SiweiShen
2014-06-14 18:21:03 +08:00

View File

@ -94,12 +94,13 @@ println("A marathon is \(aMarathon) meters long")
<a name="initializers"></a>
## 构造器Initializers
扩展可以向已有类型添加新的构造器。这可以让你扩展其它类型,将你自己的定制类型作为构造器参数,或者提供该类型的原始实现中没有包含的额外初始化选项。
扩展可以向已有类型添加新的构造器。这可以让你扩展其它类型,将你自己的定制类型作为构造器参数,或者提供该类型的原始实现中没有包含的额外初始化选项。
扩展能向类中添加新的便利构造器,但是它们不能向类中添加新的指定构造器或析构函数。指定构造器和析构函数必须总是由原始的类实现来提供。
> 注意:
>
如果你使用扩展向一个值类型添加一个构造器该构造器向所有的存储属性提供默认值而且没有定义任何定制构造器custom initializers那么对于来自你的扩展构造器中的值类型你可以调用默认构造器(default initializers)和成员构造器(memberwise initializers)。
如果你使用扩展向一个值类型添加一个构造器该构造器向所有的存储属性提供默认值而且没有定义任何定制构造器custom initializers那么对于来自你的扩展构造器中的值类型你可以调用默认构造器(default initializers)和逐一成员构造器(memberwise initializers)。
正如在值类型的构造器授权中描述的,如果你已经把构造器写成值类型原始实现的一部分,上述规则不再适用。
下面的例子定义了一个用于描述几何矩形的定制结构体`Rect`。这个例子同时定义了两个辅助结构体`Size``Point`,它们都把`0.0`作为所有属性的默认值: