为什么我不能用 return "Array" 而不是 Swift 中的 NSArray 创建函数?
Why I can't create function with return "Array" instead NSArray in Swift?
Swift 2.0 - Xcode 7.2
我想创建一个这样的函数:
func returnExampleArray() -> Array {
return ["term1","term2"]
}
With函数的return在Swift 2.0中默认为"Array",但是Xcode 7.2只允许return与NSArray一起使用,像这样:
func returnExampleArray() -> NSArray {
return ["term1","term2"]
}
为什么我不能使用 Array 而不是 NSArray?
return Swift 中的 Array
的正确方法是这样写...
func returnExampleArray() -> [String] {
return ["term1","term2"]
}
或
func returnExampleArray() -> [TypeHere] {
return [.. objects of correct type here..]
}
如果您在数组中使用其他对象类型。
Fogmeister 的回答是正确的,但并没有真正告诉你原因。
Array
类型是泛型。您不能简单地 return 和 Array
因为 Swift 需要知道您可以在该数组中放入什么。你的第一个函数应该写成:
func returnExampleArray() -> Array<String>
{
return ["term1","term2"]
}
但是,数组当然有特殊的表示法。你会把 Array<T>
放在 T 是某种类型的地方,你可以把 [T]
代替,这是原始版本的语法糖,这就是 Fogmeister 的答案的来源。
NSArray
是 Objective-C 类型并且不是通用的(但您几乎可以认为它类似于 Array<AnyObject>
)这就是您的第二个示例起作用的原因。然而,在幕后发生了很多事情,因为数组 ["term1","term2"]
必须在 returned 之前转换为 NSString
的 NSArray
。
Swift 2.0 - Xcode 7.2
我想创建一个这样的函数:
func returnExampleArray() -> Array {
return ["term1","term2"]
}
With函数的return在Swift 2.0中默认为"Array",但是Xcode 7.2只允许return与NSArray一起使用,像这样:
func returnExampleArray() -> NSArray {
return ["term1","term2"]
}
为什么我不能使用 Array 而不是 NSArray?
return Swift 中的 Array
的正确方法是这样写...
func returnExampleArray() -> [String] {
return ["term1","term2"]
}
或
func returnExampleArray() -> [TypeHere] {
return [.. objects of correct type here..]
}
如果您在数组中使用其他对象类型。
Fogmeister 的回答是正确的,但并没有真正告诉你原因。
Array
类型是泛型。您不能简单地 return 和 Array
因为 Swift 需要知道您可以在该数组中放入什么。你的第一个函数应该写成:
func returnExampleArray() -> Array<String>
{
return ["term1","term2"]
}
但是,数组当然有特殊的表示法。你会把 Array<T>
放在 T 是某种类型的地方,你可以把 [T]
代替,这是原始版本的语法糖,这就是 Fogmeister 的答案的来源。
NSArray
是 Objective-C 类型并且不是通用的(但您几乎可以认为它类似于 Array<AnyObject>
)这就是您的第二个示例起作用的原因。然而,在幕后发生了很多事情,因为数组 ["term1","term2"]
必须在 returned 之前转换为 NSString
的 NSArray
。