i8d0g
V2EX  ›  Swift

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

  •  
  •   i8d0g · Apr 29, 2015 · 4596 views
    This topic created in 4033 days ago, the information mentioned may be changed or developed.
    比如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 replies    2015-05-14 21:03:12 +08:00
    ALeo
        1
    ALeo  
       Apr 29, 2015
    swift就是强类型语言...

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

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

    这么用...
    zenghaojim33
        7
    zenghaojim33  
       May 14, 2015
    楼上应该是正解
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   954 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 20:08 · PVG 04:08 · LAX 13:08 · JFK 16:08
    ♥ Do have faith in what you're doing.