Swift 有些行为好奇怪啊,是我用的姿势不对吗?

2015-04-29 22:12:31 +08:00
 i8d0g
比如Array
var a = Array() //Cannot invoke initializer for type 'Array<T>' with no arguments
但是文档上明明有这么个构造来着

var a = []
a.append("a") // NSArray does not have a member named 'append'
这也是因为没有无参构造所以自动转成了NSArray了?

var a = [String]()
a.append("a") //这样就可以了
4069 次点击
所在节点    Swift
7 条回复
ALeo
2015-04-29 22:21:46 +08:00
swift就是强类型语言...

不指定类型声明能成功?
i8d0g
2015-04-29 22:24:15 +08:00
@ALeo 不是有很牛逼的类型检测吗 所以如果声明时初始化可以不用声明类型
ALeo
2015-04-29 22:28:44 +08:00
@i8d0g 自动类型检测难道不是你在声明的时候赋值了才会检测么?
i8d0g
2015-04-29 22:36:20 +08:00
@ALeo var a = [] 这不是赋值吗?
ALeo
2015-04-29 22:40:28 +08:00
@i8d0g 那你告诉我 []是什么类型....
undeflife
2015-04-29 22:46:18 +08:00
Swift里的Array是Array<T>,也就是说必须要声明数组的类型, []这样的是不行的,要写成[Type]()

var emptyArray = Array<Int>()
或者
var emptyArray = [Int]()

这么用...
zenghaojim33
2015-05-14 21:03:12 +08:00
楼上应该是正解

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/187359

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX