-1
为什么这甚至编译?什么是需要一个空的下标,显然行为像一个没有参数的函数?感觉在空下标后面?
extension Array {
subscript() -> Int {
return 0
}
}
let array = [1,3,2]
print(array[]) // "0"
注意,它也可以用来赋值,所以它的行为就像一个名为[]
一个计算性能。
为什么这甚至编译?什么是需要一个空的下标,显然行为像一个没有参数的函数?感觉在空下标后面?
extension Array {
subscript() -> Int {
return 0
}
}
let array = [1,3,2]
print(array[]) // "0"
注意,它也可以用来赋值,所以它的行为就像一个名为[]
一个计算性能。
为什么这甚至编译
它编译因为你定义一个空标扩展阵列:
extension Array {
subscript() -> Int {
return 0
}
}
阵列已具有标定义,因此您提供的索引号并找回该索引处的元素。此扩展添加另一个下标,从而您不提供任何内容并返回数字零。
没有这种扩展,这将不编译:
let array = [1,3,2]
print(array[])
什么是需要一个空的标这明显表现就像一个没有参数的函数
有没有“需要“;这是一个方便。毕竟,对于一般的下标,你可以做出完全相同的“异议”!他们什么都不做,你不能通过方法完成。事实上,这样的方法存在;下标符号仅仅是一个令人愉快的句法糖。
它没有意义,但它不会使它无效Swift代码。没有编译器/语言可以阻止你做所有的无意义的事情 –
为什么它*不*工作?关于*需求* - 你定义它,想想需要。 – luk2302