Tuple Type
Inspect one language lane at a time so line-level text and code deltas stay readable.
Diff Lane
English
0 modified sections0 code block delta0 anchor delta
Diff Lane
中文
1 modified sections0 code block delta0 anchor delta
modified元组类型的类型参数text+1 line, -1 line
v1.0.5
Section Text
1
可以为元组类型标记显式的类型参数名,下面例子中的 `name` 和 `price` 就是 `类型参数名`。2
3
<!-- verify -->4
5
6
编译并执行上面的代码,会输出:7
8
9
对于一个元组类型,只允许统一写类型参数名,或者统一不写类型参数名,不允许交替存在,并且参数名本身不能作为变量使用或用于访问元组中元素。10
11
<!-- compile.error -->Code 1 · cangjie
1
func getFruitPrice(): (name: String, price: Int64) {2
return ("banana", 10)3
}4
5
main() {6
let tmp = getFruitPrice()7
var a = tmp[0]8
var b = tmp[1]9
b++10
println("b = ${b}, tmp[1] = ${tmp[1]}")11
}Code 2 · text
1
b = 11, tmp[1] = 10Code 3 · cangjie
1
let a: (name: String, Int64) = ("banana", 5) // Error, in a parameter type list, either all parameters must be named, or none of them2
let b: (name: String, price: Int64) = ("banana", 5) // OK3
b.name // Error, undeclared identifier 'name'v1.1.0
Section Text
1
可以为元组类型标记显式的类型参数名,下面例子中的 `name` 和 `price` 就是类型参数名。2
3
<!-- verify -->4
5
6
编译并执行上面的代码,会输出:7
8
9
对于一个元组类型,只允许统一写类型参数名,或者统一不写类型参数名,不允许交替存在,并且参数名本身不能作为变量使用或用于访问元组中元素。10
11
<!-- compile.error -->Code 1 · cangjie
1
func getFruitPrice(): (name: String, price: Int64) {2
return ("banana", 10)3
}4
5
main() {6
let tmp = getFruitPrice()7
var a = tmp[0]8
var b = tmp[1]9
b++10
println("b = ${b}, tmp[1] = ${tmp[1]}")11
}Code 2 · text
1
b = 11, tmp[1] = 10Code 3 · cangjie
1
let a: (name: String, Int64) = ("banana", 5) // Error, in a parameter type list, either all parameters must be named, or none of them2
let b: (name: String, price: Int64) = ("banana", 5) // OK3
b.name // Error, undeclared identifier 'name'