V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
i8d0g
V2EX  ›  Swift

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

  •  
  •   i8d0g · 2015-04-29 22:12:31 +08:00 · 3932 次点击
    这是一个创建于 3256 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如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") //这样就可以了
    7 条回复    2015-05-14 21:03:12 +08:00
    ALeo
        1
    ALeo  
       2015-04-29 22:21:46 +08:00
    swift就是强类型语言...

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

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

    这么用...
    zenghaojim33
        7
    zenghaojim33  
       2015-05-14 21:03:12 +08:00
    楼上应该是正解
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1668 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:46 · PVG 00:46 · LAX 09:46 · JFK 12:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.