resolve conflict

This commit is contained in:
numbbbbb
2014-06-14 20:41:51 +08:00
115 changed files with 251 additions and 189 deletions

0
source/chapter3/01_About_the_Language_Reference.md Normal file → Executable file
View File

0
source/chapter3/02_Lexical_Structure.md Normal file → Executable file
View File

0
source/chapter3/03_Types.md Normal file → Executable file
View File

8
source/chapter3/04_Expressions.md Normal file → Executable file
View File

@ -607,17 +607,17 @@ someInstance.dynamicType.printClassName
>
> *dynamic-type-expression* → *postfix-expression*­.­dynamicType­
### 附属脚本表达式Subscript Expression
### 下标脚本表达式Subscript Expression
附属脚本表达式提供了通过附属脚本访问getter/setter 的方法。它的形式是:
下标脚本表达式提供了通过下标脚本访问getter/setter 的方法。它的形式是:
`expression`[`index expressions`]
可以通过附属脚本表达式通过getter获取某个值或者通过setter赋予某个值.
可以通过下标脚本表达式通过getter获取某个值或者通过setter赋予某个值.
关于subscript的声明请参见 Protocol Subscript Declaration.
> 附属脚本表达式的语法
> 下标脚本表达式的语法
>
> *subscript-expression* → *postfix-expression*­[­*expression-list*­]­

71
source/chapter3/05_Declarations.md Normal file → Executable file
View File

@ -21,14 +21,14 @@
- [构造器声明](#initializer_declaration)
- [析构声明](#deinitializer_declaration)
- [扩展声明](#extension_declaration)
- [附属脚本声明](#subscript_declaration)
- [下标脚本声明](#subscript_declaration)
- [运算符声明](#operator_declaration)
一条声明可以在你的程序里引入新的名字和构造。举例来说,你可以使用声明来引入函数和方法,变量和常量,或者来定义
新的命名好的枚举,结构,类和协议类型。你也可以使用一条声明来延长一个已经存在的命名好的类型的行为。或者在你的
程序里引入在其他地方声明的符号。
在swift中大多数声明在某种意义上讲也是执行或同事声明它们的初始化定义。这意味着因为协议和们的成员不匹配,
在swift中大多数声明在某种意义上讲也是执行或同事声明它们的初始化定义。这意味着因为协议和们的成员不匹配,
大多数协议成员需要单独的声明。为了方便起见也因为这些区别在swift里不是很重要声明语句同时包含了声明和定义。
> 声明语法
@ -54,7 +54,7 @@
##模块范围
模块范围定义了对模块中其他源文件可见的代码。待改进在swift的源文件中最高级别的代码由零个或多个语句
声明和表达组成。变量,常量和其他的声明语句在一个源文件的最顶级被声明,使得们对同一模块中的每个源文件都是可见的。
声明和表达组成。变量,常量和其他的声明语句在一个源文件的最顶级被声明,使得们对同一模块中的每个源文件都是可见的。
> 顶级(Top Level) 声明语法
> *顶级声明* → [*多条语句(Statements)*](..\chapter3\10_Statements.html#statements) _可选_
@ -102,7 +102,7 @@
当常量的值被给定后,常量就将常量名称和表达式初始值不变的结合在了一起,而且不能更改。
这意味着如果常量以类的形式被初始化,类本身的内容是可以改变的,但是常量和类之间的结合关系是不能改变的。
当一个常量被声明为全局变量,它必须被给定一个初始值。当一个常量在类或者结构体中被声明时,被认为是一个常量
当一个常量被声明为全局变量,它必须被给定一个初始值。当一个常量在类或者结构体中被声明时,被认为是一个常量
属性。常量并不是可计算的属性因此不包含getters和setters。译者注getters和setters不知道怎么翻译待改进
如果常量名是一个元祖形式,元祖中的每一项初始化表达式中都要有对应的值
@ -116,7 +116,7 @@
println("The second number is \(secondNumber).")
// prints "The second number is 42."
类型注释(:type在常量声明中是一个可选项它可以用来描述在类型接口type inference中找到的类型。
类型注释(:type在常量声明中是一个可选项它可以用来描述在类型推断type inference中找到的类型。
声明一个静态常量要使用关键字static。静态属性在类型属性type propetries中有介绍。
@ -147,7 +147,7 @@
var variable name: type = expression
你可以在全局,函数内,或者在类和结构体的声明(context)中使用这种形式来声明一个变量。当变量以这种形式
在全局或者一个函数内被声明时,它代表一个存储型变量。当在类或者结构体中被声明时,代表一个存储型变量属性。
在全局或者一个函数内被声明时,它代表一个存储型变量。当在类或者结构体中被声明时,代表一个存储型变量属性。
构造器表达式可以被
@ -169,8 +169,8 @@
}
你可以在全局,函数体内或者类,结构体,枚举,扩展声明的上下文中使用这种形式的声明。
当变量以这种形式在全局或者一个函数内被声明时,它代表一个计算型变量。当在类,结构体,枚举,扩展声明的上下文
中中被声明时,代表一个计算型变量属性。
当变量以这种形式在全局或者一个函数内被声明时,它代表一个计算型变量。当在类,结构体,枚举,扩展声明的上下文
中中被声明时,代表一个计算型变量属性。
getter用来读取变量值setter用来写入变量值。setter子句是可选择的只有getter是必需的你可以将这些语句
都省略,只是简单的直接返回请求值,正如在只读计算属性(read-only computed properites)中描述的那样。
@ -198,7 +198,7 @@ setter的初始名为newValue正如在seter声明速记(shorthand setter decl
你可以在全局,函数体内或者类,结构体,枚举,扩展声明的上下文中使用这种形式的声明。
当变量以这种形式在全局或者一个函数内被声明时,监视器代表一个存储型变量监视器;
在类,结构体,枚举,扩展声明的上下文中被声明时,监视器代表属性监视器。
在类,结构体,枚举,扩展声明的上下文中被声明时,监视器代表属性监视器。
你可以为适合的监视器添加任何存储型属性。你也可以通过重写子类属性的方式为适合的监视器添加任何继承的属性
(无论是存储型还是计算型的),参见重写属性监视器(overriding properyt observers)。
@ -207,7 +207,7 @@ setter的初始名为newValue正如在seter声明速记(shorthand setter decl
所有包含监视器的变量声明都必须有类型注释(type annotation)。
当变量或属性的值被改变时willset和didset监视器提供了一个监视方法适当的回应
监视器不会在变量或属性第一次初始化时不会被运行,们只有在值被外部初始化语句改变时才会被运行。
监视器不会在变量或属性第一次初始化时不会被运行,们只有在值被外部初始化语句改变时才会被运行。
willset监视器只有在变量或属性值被改变之前运行。新的值作为一个常量经过过willset监视器因此不可以在
willset语句中改变它。didset监视器在变量或属性值被改变后立即运行。和willset监视器相反为了以防止你仍然
@ -570,7 +570,7 @@ protocol protocol name: inherited protocols {
}
```
协议的主体包含零或多个协议成员声明,这些成员描述了任何采用该协议必须满足的一致性要求。特别的,一个协议可以声明必须实现某些属性、方法、初始化程序及附属脚本的一致性类型。协议也可以声明专用种类的类型别名,叫做关联类型,它可以指定协议的不同声明之间的关系。协议成员声明会在下面的详情里进行讨论。
协议的主体包含零或多个协议成员声明,这些成员描述了任何采用该协议必须满足的一致性要求。特别的,一个协议可以声明必须实现某些属性、方法、初始化程序及下标脚本的一致性类型。协议也可以声明专用种类的类型别名,叫做关联类型,它可以指定协议的不同声明之间的关系。协议成员声明会在下面的详情里进行讨论。
协议类型可以从很多其它协议那继承。当一个协议类型从其它协议那继承的时候,来自其它协议的所有要求就集合了,而且从当前协议继承的任何类型必须符合所有的这些要求。对于如何使用协议继承的例子,查看[协议继承](../chapter2/21_Protocols.html#protocol_inheritance)
@ -580,7 +580,7 @@ protocol protocol name: inherited protocols {
你可以通过采用在类型的扩展声明中的协议来为之前声明的类型添加协议一致性。在扩展中你必须实现所有采用协议的要求。如果该类型已经实现了所有的要求,你可以让这个扩展声明的主题留空。
默认地,符合某一个协议的类型必须实现所有声明在协议中的属性、方法和附属脚本。也就是说,你可以用`optional`属性标注这些协议成员声明以指定它们的一致性类型实现是可选的。`optional`属性仅仅可以用于使用`objc`属性标记过的协议。这样的结果就是仅仅类类型可以采用并符合包含可选成员要求的协议。更多关于如何使用`optional`属性的信息及如何访问可选协议成员的指导——比如当你不能肯定是否一致性的类型实现了它们——参见[可选协议要求](../chapter2/21_Protocols.html#optional_protocol_requirements)
默认地,符合某一个协议的类型必须实现所有声明在协议中的属性、方法和下标脚本。也就是说,你可以用`optional`属性标注这些协议成员声明以指定它们的一致性类型实现是可选的。`optional`属性仅仅可以用于使用`objc`属性标记过的协议。这样的结果就是仅仅类类型可以采用并符合包含可选成员要求的协议。更多关于如何使用`optional`属性的信息及如何访问可选协议成员的指导——比如当你不能肯定是否一致性的类型实现了它们——参见[可选协议要求](../chapter2/21_Protocols.html#optional_protocol_requirements)
为了限制协议的采用仅仅针对类类型,需要使用`class_protocol`属性标记整个协议声明。任意继承自标记有`class_protocol`属性协议的协议都可以智能地仅能被类类型采用。
@ -622,7 +622,7 @@ protocol protocol name: inherited protocols {
###协议方法声明
协议声明了一致性类型必须在协议声明的主体里通过引入一个协议方法声明来实现一个方法.
协议方法声明和函数方法声明有着相同的形式,包含如下两条规则:们不包括函数体,你不能在类的声明内为们的
协议方法声明和函数方法声明有着相同的形式,包含如下两条规则:们不包括函数体,你不能在类的声明内为们的
参数提供初始值.举例来说,符合的类型执行协议必需的方法。参见必需方法一节。
使用关键字class可以在协议声明中声明一个类或必需的静态方法。执行这些方法的类也用关键字class声明。
@ -644,18 +644,18 @@ protocol protocol name: inherited protocols {
> 协议构造器声明语法
> *协议构造器声明* → [*构造器头(Head)*](..\chapter3\05_Declarations.html#initializer_head) [*泛型参数子句*](GenericParametersAndArguments.html#generic_parameter_clause) _可选_ [*参数子句*](..\chapter3\05_Declarations.html#parameter_clause)
###协议附属脚本声明
###协议下标脚本声明
协议声明了一致性类型必须在协议声明的主体里通过引入一个协议附属脚本声明来实现一个附属脚本。协议属性声明
附属脚本声明有一个特殊的形式:
协议声明了一致性类型必须在协议声明的主体里通过引入一个协议下标脚本声明来实现一个下标脚本。协议属性声明
下标脚本声明有一个特殊的形式:
subscript (parameters) -> return type { get set }
附属脚本声明只为和协议一致的类型声明了必需的最小数量的的getter和setter。如果附属脚本申明包含get和set关键字
一致的类型也必须有一个getter和setter语句。如果附属脚本声明值包含get关键字一致的类型必须至少包含一个
下标脚本声明只为和协议一致的类型声明了必需的最小数量的的getter和setter。如果下标脚本申明包含get和set关键字
一致的类型也必须有一个getter和setter语句。如果下标脚本声明值包含get关键字一致的类型必须至少包含一个
getter语句可以选择是否包含setter语句。
更多参阅附属脚本声明。
更多参阅下标脚本声明。
> 协议附属脚本声明语法
> *协议附属脚本声明* → [*附属脚本头(Head)*](..\chapter3\05_Declarations.html#subscript_head) [*附属脚本结果(Result)*](..\chapter3\05_Declarations.html#subscript_result) [*getter-setter关键字(Keyword)块*](..\chapter3\05_Declarations.html#getter_setter_keyword_block)
@ -701,8 +701,8 @@ getter语句可以选择是否包含setter语句。
以一个将所有类属性完全初始化的指定构造器的调用作为结束。便利构造器不能调用超类的构造器。
你可以使用requierd关键字将便利构造器和指定构造器标记为每个子类的构造器都必须拥有的。因为指定构造器
不被子类继承,们必须被立即执行。当子类直接执行所有超类的指定构造器(或使用便利构造器重写指定构造器)时,
必需的便利构造器可以被隐式的执行,亦可以被继承。不像方法,附属脚本那样,你不需要为这些重写的构造器标注
不被子类继承,们必须被立即执行。当子类直接执行所有超类的指定构造器(或使用便利构造器重写指定构造器)时,
必需的便利构造器可以被隐式的执行,亦可以被继承。不像方法,下标脚本那样,你不需要为这些重写的构造器标注
overrride关键字。
查看更多关于不同声明方法的构造器的例子,参阅构造过程一节。
@ -743,7 +743,7 @@ overrride关键字。
}
一个扩展声明体包括零个或多个声明。这些声明可以包括计算型属性,计算型静态属性,实例方法,静态和类方法,构造器,
附属脚本声明,甚至其他结构体,类,和枚举声明。扩展声明不能包含析构器,协议声明,存储型属性,属性监测器或其他
下标脚本声明,甚至其他结构体,类,和枚举声明。扩展声明不能包含析构器,协议声明,存储型属性,属性监测器或其他
的扩展属性。详细讨论和查看包含多种扩展声明的实例,参见扩展一节。
扩展声明可以向现存的类,结构体,枚举内添加一致的协议。扩展声明不能向一个类中添加继承的类,因此
@ -759,8 +759,9 @@ type-inheritance-clause是一个只包含协议列表的扩展声明。
> *extension-body* → **{** [*声明(Declarations)列表*](..\chapter3\05_Declarations.html#declarations) _可选_ **}**
<a name="subscript_declaration"></a>
##附属脚本声明(translated by 林)
##下标脚本声明(translated by 林)
<<<<<<< HEAD
附属脚本用于向特定类型添加附属脚本支持通常为访问集合列表和序列的元素时提供语法便利附属脚本声明使用关键字`subscript`声明形式如下
> subscript (`parameter`) -> (return type){
get{
@ -772,18 +773,30 @@ type-inheritance-clause是一个只包含协议列表的扩展声明。
}
附属脚本声明只能在类结构体枚举扩展和协议声明的上下文进行声明
=======
下标脚本用于向特定类型添加下标脚本支持通常为访问集合列表和序列的元素时提供语法便利下标脚本声明使用关键字`subscript`声明形式如下
> subscript (`parameter`) -> (return type){
get{
`statements`
}
set(`setter name`){
`statements`
}
}
下标脚本声明只能在类结构体枚举扩展和协议声明的上下文进行声明
>>>>>>> a516af6a531a104ec88da0d236ecf389a5ec72af
_变量(parameters)_指定一个或多个用于在相关类型的附属脚本中访问元素的索引(例如,表达式`object[i]`中的`i`。尽管用于元素访问的索引可以是任意类型的但是每个变量必须包含一个用于指定每种索引类型的类型标注。_返回类型(return type)_指定被访问的元素的类型。
_变量(parameters)_指定一个或多个用于在相关类型的下标脚本中访问元素的索引(例如,表达式`object[i]`中的`i`。尽管用于元素访问的索引可以是任意类型的但是每个变量必须包含一个用于指定每种索引类型的类型标注。_返回类型(return type)_指定被访问的元素的类型。
和计算性属性一样,附属脚本声明支持对访问元素的读写操作。getter用于读取值setter用于写入值。setter子句是可选的当仅需要一个getter子句时可以将二者都忽略且直接返回请求的值即可。也就是说如果使用了setter子句就必须使用getter子句。
和计算性属性一样,下标脚本声明支持对访问元素的读写操作。getter用于读取值setter用于写入值。setter子句是可选的当仅需要一个getter子句时可以将二者都忽略且直接返回请求的值即可。也就是说如果使用了setter子句就必须使用getter子句。
setter的名字和封闭的括号是可选的。如果使用了setter名称它会被当做传给setter的变量的名称。如果不使用setter名称那么传给setter的变量的名称默认是`value`。setter名称的类型必须与_返回类型(return type)_的类型相同。
可以在附属脚本声明的类型中,可以重载附属脚本只要_变量(parameters)_或_返回类型(return type)_与先前的不同即可。此时必须使用`override`关键字声明那个被覆盖的附属脚本。(注:好乱啊!到底是重载还是覆盖?!)
可以在下标脚本声明的类型中,可以重载下标脚本只要_变量(parameters)_或_返回类型(return type)_与先前的不同即可。此时必须使用`override`关键字声明那个被覆盖的下标脚本。(注:好乱啊!到底是重载还是覆盖?!)
同样可以在协议声明的上下文中声明附属脚本,[Protocol Subscript Declaration](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/doc/uid/TP40014097-CH34-XID_619)中有所描述。
同样可以在协议声明的上下文中声明下标脚本,[Protocol Subscript Declaration](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/doc/uid/TP40014097-CH34-XID_619)中有所描述。
更多关于附属脚本和附属脚本声明的例子,请参考[Subscripts](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Subscripts.html#//apple_ref/doc/uid/TP40014097-CH16-XID_393)。
更多关于下标脚本和下标脚本声明的例子,请参考[Subscripts](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Subscripts.html#//apple_ref/doc/uid/TP40014097-CH16-XID_393)。
> 附属脚本声明语法
> *附属脚本声明* → [*附属脚本头(Head)*](..\chapter3\05_Declarations.html#subscript_head) [*附属脚本结果(Result)*](..\chapter3\05_Declarations.html#subscript_result) [*代码块*](..\chapter3\05_Declarations.html#code_block)
@ -842,4 +855,4 @@ _中缀_运算符是二元运算符它可以被置于两个操作数之间
> *优先级子句* → **precedence** [*优先级水平*](..\chapter3\05_Declarations.html#precedence_level)
> *优先级水平* → 数值 0 到 255
> *结和性子句* → **associativity** [*结和性*](..\chapter3\05_Declarations.html#associativity)
> *结和性***left** | **right** | **none**
> *结和性* → **left** | **right** | **none**

0
source/chapter3/06_Attributes.md Normal file → Executable file
View File

4
source/chapter3/07_Patterns.md Normal file → Executable file
View File

@ -17,7 +17,7 @@
模式pattern代表了单个值或者复合值的结构。例如元组`(1, 2)`的结构是逗号分隔的,包含两个元素的列表。因为模式代表一种值的结构,而不是特定的某个值,你可以把模式和各种同类型的值匹配起来。比如,`(x, y)`可以匹配元组`(1, 2)`,以及任何含两个元素的元组。除了将模式与一个值匹配外,你可以从合成值中提取出部分或全部,然后分别把各个部分和一个常量或变量绑定起来。
在Swift中模式出现在变量和常量的声明在它们的左侧`for-in`语句和`switch`语句(在们的case标签中。尽管任何模式都可以出现在`switch`语句的case标签中但在其他情况下只有通配符模式wildcard pattern标识符模式identifier pattern和包含这两种模式的模式才能出现。
在Swift中模式出现在变量和常量的声明在它们的左侧`for-in`语句和`switch`语句(在们的case标签中。尽管任何模式都可以出现在`switch`语句的case标签中但在其他情况下只有通配符模式wildcard pattern标识符模式identifier pattern和包含这两种模式的模式才能出现。
你可以为通配符模式wildcard pattern标识符模式identifier pattern和元组模式tuple pattern指定类型注释用来限制这种模式只匹配某种类型的值。
@ -120,7 +120,7 @@
is type
pattern as type
`is`模式匹配一个值如果这个值的类型在运行时runtime`is`模式右边的指定类型(或者那个类型的子类)是一致的。`is`模式和`is`操作符一样,们都进行类型转换,但是抛弃了返回的类型。
`is`模式匹配一个值如果这个值的类型在运行时runtime`is`模式右边的指定类型(或者那个类型的子类)是一致的。`is`模式和`is`操作符一样,们都进行类型转换,但是抛弃了返回的类型。
`as`模式匹配一个值如果这个值的类型在运行时runtime`as`模式右边的指定类型(或者那个类型的子类)是一致的。一旦匹配成功,匹配的值的类型被转换成`as`模式左边指定的模式。

0
source/chapter3/08_Generic_Parameters_and_Arguments.md Normal file → Executable file
View File

20
source/chapter3/09_Summary_of_the_Grammar.md Normal file → Executable file
View File

@ -159,7 +159,7 @@ _________________
> *声明* → [*构造器声明*](..\chapter3\05_Declarations.html#initializer_declaration)
> *声明* → [*析构器声明*](..\chapter3\05_Declarations.html#deinitializer_declaration)
> *声明* → [*扩展声明*](..\chapter3\05_Declarations.html#extension_declaration)
> *声明* → [*附属脚本声明*](..\chapter3\05_Declarations.html#subscript_declaration)
> *声明* → [*下标脚本声明*](..\chapter3\05_Declarations.html#subscript_declaration)
> *声明* → [*运算符声明*](..\chapter3\05_Declarations.html#operator_declaration)
> *声明(Declarations)列表* → [*声明*](..\chapter3\05_Declarations.html#declaration) [*声明(Declarations)列表*](..\chapter3\05_Declarations.html#declarations) _可选_
> *声明描述符(Specifiers)列表* → [*声明描述符(Specifier)*](..\chapter3\05_Declarations.html#declaration_specifier) [*声明描述符(Specifiers)列表*](..\chapter3\05_Declarations.html#declaration_specifiers) _可选_
@ -285,7 +285,7 @@ _________________
> *协议成员声明* → [*协议属性声明*](..\chapter3\05_Declarations.html#protocol_property_declaration)
> *协议成员声明* → [*协议方法声明*](..\chapter3\05_Declarations.html#protocol_method_declaration)
> *协议成员声明* → [*协议构造器声明*](..\chapter3\05_Declarations.html#protocol_initializer_declaration)
> *协议成员声明* → [*协议附属脚本声明*](..\chapter3\05_Declarations.html#protocol_subscript_declaration)
> *协议成员声明* → [*协议下标脚本声明*](..\chapter3\05_Declarations.html#protocol_subscript_declaration)
> *协议成员声明* → [*协议关联类型声明*](..\chapter3\05_Declarations.html#protocol_associated_type_declaration)
> *协议成员声明(Declarations)列表* → [*协议成员声明*](..\chapter3\05_Declarations.html#protocol_member_declaration) [*协议成员声明(Declarations)列表*](..\chapter3\05_Declarations.html#protocol_member_declarations) _可选_
@ -306,8 +306,8 @@ _________________
<p></p>
> 协议附属脚本声明语法
> *协议附属脚本声明* → [*附属脚本头(Head)*](..\chapter3\05_Declarations.html#subscript_head) [*附属脚本结果(Result)*](..\chapter3\05_Declarations.html#subscript_result) [*getter-setter关键字(Keyword)块*](..\chapter3\05_Declarations.html#getter_setter_keyword_block)
> 协议下标脚本声明语法
> *协议下标脚本声明* → [*下标脚本头(Head)*](..\chapter3\05_Declarations.html#subscript_head) [*下标脚本结果(Result)*](..\chapter3\05_Declarations.html#subscript_result) [*getter-setter关键字(Keyword)块*](..\chapter3\05_Declarations.html#getter_setter_keyword_block)
<p></p>
@ -334,12 +334,12 @@ _________________
<p></p>
> 附属脚本声明语法
> *附属脚本声明* → [*附属脚本头(Head)*](..\chapter3\05_Declarations.html#subscript_head) [*附属脚本结果(Result)*](..\chapter3\05_Declarations.html#subscript_result) [*代码块*](..\chapter3\05_Declarations.html#code_block)
> *附属脚本声明* → [*附属脚本头(Head)*](..\chapter3\05_Declarations.html#subscript_head) [*附属脚本结果(Result)*](..\chapter3\05_Declarations.html#subscript_result) [*getter-setter块*](..\chapter3\05_Declarations.html#getter_setter_block)
> *附属脚本声明* → [*附属脚本头(Head)*](..\chapter3\05_Declarations.html#subscript_head) [*附属脚本结果(Result)*](..\chapter3\05_Declarations.html#subscript_result) [*getter-setter关键字(Keyword)块*](..\chapter3\05_Declarations.html#getter_setter_keyword_block)
> *附属脚本头(Head)* → [*特性(Attributes)列表*](..\chapter3\06_Attributes.html#attributes) _可选_ **subscript** [*参数子句*](..\chapter3\05_Declarations.html#parameter_clause)
> *附属脚本结果(Result)* → **->** [*特性(Attributes)列表*](..\chapter3\06_Attributes.html#attributes) _可选_ [*类型*](..\chapter3\03_Types.html#type)
> 下标脚本声明语法
> *下标脚本声明* → [*下标脚本头(Head)*](..\chapter3\05_Declarations.html#subscript_head) [*下标脚本结果(Result)*](..\chapter3\05_Declarations.html#subscript_result) [*代码块*](..\chapter3\05_Declarations.html#code_block)
> *下标脚本声明* → [*下标脚本头(Head)*](..\chapter3\05_Declarations.html#subscript_head) [*下标脚本结果(Result)*](..\chapter3\05_Declarations.html#subscript_result) [*getter-setter块*](..\chapter3\05_Declarations.html#getter_setter_block)
> *下标脚本声明* → [*下标脚本头(Head)*](..\chapter3\05_Declarations.html#subscript_head) [*下标脚本结果(Result)*](..\chapter3\05_Declarations.html#subscript_result) [*getter-setter关键字(Keyword)块*](..\chapter3\05_Declarations.html#getter_setter_keyword_block)
> *下标脚本头(Head)* → [*特性(Attributes)列表*](..\chapter3\06_Attributes.html#attributes) _可选_ **subscript** [*参数子句*](..\chapter3\05_Declarations.html#parameter_clause)
> *下标脚本结果(Result)* → **->** [*特性(Attributes)列表*](..\chapter3\06_Attributes.html#attributes) _可选_ [*类型*](..\chapter3\03_Types.html#type)
<p></p>

0
source/chapter3/10_Statements.md Normal file → Executable file
View File

0
source/chapter3/chapter3.md Normal file → Executable file
View File