Swift-style-guide: 重新考虑空数组和字典初始化

创建于 2016-04-07  ·  3评论  ·  资料来源: raywenderlich/swift-style-guide

当前的样式指南说数组和字典按以下方式初始化。

var names = [String]()
var lookup = [String: Int]()

我想反对这一点,支持:

var names: [String] = []
var lookup: [String: Int] = [:]

这是我的理由:

  • [Type]()看起来很陌生,尤其是对于新手。 对我来说, : [Type] = []在很多情况下读起来更好。
  • 当我传递一个空数组(或 OptionSetType)作为类型推断可用的参数时,我总是使用 [],而不是默认的初始化对象。 这里有一些一致性。
  • 简而言之,单线阵列,通常可以推断出类型。 这很好,应该使用。 但是,对于跨越多行的数组,类型推断可能会变得昂贵。 考虑:
var stuff = [1, 2, 3, 4, 5,  // ... 100 more numbers
                  106.7, 107, "haha", nil, 108, 109]

类型检查器需要扫描所有元素以正确键入推断stuff 。 即使没有技巧(“哈哈”),我也看到了这个让编辑陷入困境的情况。 (你好 Rainbow。)让类型检查器为你工作以仔细检查你的工作似乎是个好主意。

你怎么认为?

最有用的评论

@rayfix我越来越喜欢你建议的格式,即var names: [String] = []

我的理由是,当您想使用let常量定义数组时,这种方法看起来更符合您所采用的方法。 (您不会将其初始化为空数组,因为您以后将无法更改它)

例如在一个类的情况下:

class SimpleClass {
    let array: [String]

    init(array: [String]) {
        self.array = array
    }    
}

或者在定义一个其值取决于条件的常量数组时。

let array: [String]
if condition {
    array = array1
} else {
    array = array2
}

所有3条评论

@rayfix我越来越喜欢你建议的格式,即var names: [String] = []

我的理由是,当您想使用let常量定义数组时,这种方法看起来更符合您所采用的方法。 (您不会将其初始化为空数组,因为您以后将无法更改它)

例如在一个类的情况下:

class SimpleClass {
    let array: [String]

    init(array: [String]) {
        self.array = array
    }    
}

或者在定义一个其值取决于条件的常量数组时。

let array: [String]
if condition {
    array = array1
} else {
    array = array2
}

对此大+1!

我为我的课程选择了var array: [Type] = []表示法,因为它允许我在课程的早期教授数组(和字典)。 我的教学方法是从头开始,一次只添加一个主题,永远不要让事情无法解释。 这种表示法允许我这样做,因为它不涉及学生目前还不熟悉的任何主题,例如初始化程序或泛型。

爱它。 我在自己的代码库中使用您建议的语法; 等式一侧的 var 的定义和类型,另一侧的 value。 很好很简单。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

aramezk picture aramezk  ·  9评论

grosch picture grosch  ·  6评论

xezun picture xezun  ·  6评论

rwenderlich picture rwenderlich  ·  29评论

designatednerd picture designatednerd  ·  22评论