声明部分翻译文字校对
This commit is contained in:
@ -153,9 +153,9 @@ println("The second number is \(secondNumber).")
|
||||
你可以在全局,函数内,或者在类和结构体的声明(context)中使用这种形式来声明一个变量。当变量以这种形式
|
||||
在全局或者一个函数内被声明时,它代表一个存储型变量。当它在类或者结构体中被声明时,它代表一个存储型变量属性。
|
||||
|
||||
构造器表达式可以被
|
||||
初始化的表达式不可以在协议(protocol)的定义中出现,在其他情况下,初始化表达式是可选的(optional),如果没有初始化表达式,那么变量定义时必须显示的声明变量类型(:type)
|
||||
|
||||
和常量声明相比,如果变量名是一个元祖类型,元祖的每一项的名字都要和初始化表达式一致。
|
||||
对于常量的定义,如果名字是一个元祖(tuple),元祖每一项的`name`都要和初始化表达式`expression`中的相应值一致。
|
||||
|
||||
正如名字一样,存储型变量的值或存储型变量属性存储在内存中。
|
||||
|
||||
@ -181,7 +181,7 @@ getter用来读取变量值,setter用来写入变量值。setter子句是可
|
||||
但是如果你提供了一个setter语句,你也必需提供一个getter语句。
|
||||
|
||||
setter的名字和圆括号内的语句是可选的。如果你写了一个setter名,它就会作为setter的参数被使用。如果你不写setter名,
|
||||
setter的初始名为newValue,正如在seter声明速记(shorthand setter declaration)中提到的那样。
|
||||
setter的初始名为newValue,正如在setter声明速记(shorthand setter declaration)中提到的那样。
|
||||
|
||||
不像存储型变量和存储型属性那样,计算型属性和计算型变量的值不存储在内存中。
|
||||
|
||||
@ -211,7 +211,7 @@ setter的初始名为newValue,正如在seter声明速记(shorthand setter decl
|
||||
所有包含监视器的变量声明都必须有类型注释(type annotation)。
|
||||
|
||||
当变量或属性的值被改变时,willset和didset监视器提供了一个监视方法(适当的回应)。
|
||||
监视器不会在变量或属性第一次初始化时不会被运行,它们只有在值被外部初始化语句改变时才会被运行。
|
||||
监视器不会在变量或属性第一次初始化时运行,它们只有在值被外部初始化语句改变时才会被运行。
|
||||
|
||||
willset监视器只有在变量或属性值被改变之前运行。新的值作为一个常量经过过willset监视器,因此不可以在
|
||||
willset语句中改变它。didset监视器在变量或属性值被改变后立即运行。和willset监视器相反,为了以防止你仍然
|
||||
@ -259,7 +259,7 @@ class关键字用来声明类的计算型属性。static关键字用来声明类
|
||||
|
||||
> `typealias name` = `existing type`
|
||||
|
||||
当一个类型被别名被声明后,你可以在你程序的任何地方使用别名来代替已存在的类型。已存在的类型可以是已经被命名的
|
||||
当声明一个类型的别名后,你可以在你程序的任何地方使用别名来代替已存在的类型。已存在的类型可以是已经被命名的
|
||||
类型或者是混合类型。类型的别名不产生新的类型,它只是简单的和已存在的类型做名称替换。
|
||||
|
||||
查看更多Protocol Associated Type Declaration.
|
||||
@ -286,7 +286,7 @@ class关键字用来声明类的计算型属性。static关键字用来声明类
|
||||
> `statements`
|
||||
> }
|
||||
|
||||
每个参数的类型都要标明,它们不能被推断出来。初始时函数的参数是常值。在这些参数前面添加var使它们成为变量,
|
||||
每个参数的类型都要标明,它们不能被推断出来。初始时函数的参数是常量。在这些参数前面添加var使它们成为变量,
|
||||
作用域内任何对变量的改变只在函数体内有效,或者用inout使的这些改变可以在调用域内生效。
|
||||
更多关于in-out参数的讨论,参见in-out参数(in-out parameters)
|
||||
|
||||
@ -349,8 +349,8 @@ c.f(7, y: "hello") // x没有名称,y有名称
|
||||
且必须是最后一个参数。可变参数被作为该基本类型名的数组来看待。举例来讲,可变参数int...被看做是int[]。
|
||||
查看可变参数的使用例子,详见可变参数(variadic parameters)一节。
|
||||
|
||||
在参数的类型后面有一个以等号(=)连接的表达式,这样的参数被看做有着给定表达式的初试值。如果参数在函数
|
||||
调用时被省略了,就会使用初始值。如果参数没有胜率,那么它在函数调用是必须有自己的名字.举例来讲,
|
||||
在参数的类型后面有一个以等号(=)连接的表达式,这样的参数被看做有着给定表达式的初始值。如果参数在函数
|
||||
调用时被省略了,就会使用初始值。如果参数没有省略,那么它在函数调用是必须有自己的名字.举例来讲,
|
||||
f()和f(x:7)都是只有一个变量x的函数的有效调用,但是f(7)是非法的,因为它提供了一个值而不是名称。
|
||||
|
||||
###特殊方法
|
||||
@ -362,7 +362,7 @@ f()和f(x:7)都是只有一个变量x的函数的有效调用,但是f(7)是非
|
||||
|
||||
和类型相关而不是和类型实例相关的方法必须在static声明的结构以或枚举内,亦或是以class关键字定义的类内。
|
||||
|
||||
###柯里化函数和方法
|
||||
###柯里化函数和方法(Curried Functions and Methods)
|
||||
|
||||
柯里化函数或方法有着如下的形式:
|
||||
|
||||
@ -370,7 +370,7 @@ f()和f(x:7)都是只有一个变量x的函数的有效调用,但是f(7)是非
|
||||
> `statements`
|
||||
> }
|
||||
|
||||
以这种形式定义的函数的返回值是另一个函数。举例来说,下面的两个声明时等价的:
|
||||
以这种形式定义的函数的返回值是另一个函数。举例来说,下面的两个声明是等价的:
|
||||
|
||||
```swift
|
||||
func addTwoNumbers(a: Int)(b: Int) -> Int {
|
||||
@ -546,8 +546,8 @@ ExampleEnum.D的值会自动增长为6.
|
||||
|
||||
一个类只能继承一个父类,超类,但是可以包含任意数量的协议。这些超类第一次在type-inheritance-clause出现,遵循任意协议。
|
||||
|
||||
正如在初始化声明(Initializer Declaration)谈及的那样,类可以有指定和方便的构造器。当你声明任一中构造器时,
|
||||
你可以使用requierd变量来标记构造器,要求任意子类来重写它。指定类的构造器必须初始化类所有的已声明的属性,
|
||||
正如在初始化声明(Initializer Declaration)谈及的那样,类可以有指定(designated)和方便(convenience)构造器。当你声明任一种构造器时,
|
||||
你可以使用required变量来标记构造器,要求任意子类来重写它。指定类的构造器必须初始化类所有的已声明的属性,
|
||||
它必须在子类构造器调用前被执行。
|
||||
|
||||
类可以重写属性,方法和它的超类的构造器。重写的方法和属性必须以override标注。
|
||||
|
||||
Reference in New Issue
Block a user