Swift中没有默认(T)吗?

我试图将斯威夫特书中的“矩阵”示例移植到通用.

这是我到目前为止

struct Matrix<T> {
    let rows: Int,columns: Int
    var grid: T[]

    init(rows: Int,columns: Int,repeatedValue: T) {
        self.rows = rows
        self.columns = columns

        grid = Array(count: rows * columns,repeatedValue: repeatedValue)
    }

    func indexIsValidForRow(row: Int,column: Int) -> Bool {
        return row >= 0 && row < rows && column >= 0 && column < columns
    }

    subscript(row: Int,column: Int) -> T {
        get {
            assert(indexIsValidForRow(row,column: column),"Index out of range")
            return grid[(row * columns) + column]
        }
        set {
            assert(indexIsValidForRow(row,"Index out of range")
            grid[(row * columns) + column] = newValue
        }
    }
}

注意,我不得不通过repeValue:T到构造函数.

在C#中,我会使用default(T),对于数字将为0,对于booleans为false,对于引用类型为null.我明白Swift不允许在非可选类型上使用,但如果传递一个显式参数是唯一的方法,或者如果我有一些等同于默认值(T)的话,我仍然很好奇.

没有. Swift强制您指定默认值,就像处理变量和字段一样. Swift有一个默认值的概念的唯一情况是可选类型,其中nil(Optional.None).

相关文章

Swift 正式开源!Swift 团队很高兴宣布 Swift 开始开源新篇章。自从苹果发布 Swfit 编程语言,就成为了...
快,快,快!动动您的小手,分享给更多朋友! 苹果去年推出了全新的编程语言Swift,试图让iOS开发更简单...
开发者(KaiFaX) 面向开发者、程序员的专业平台! 和今年年初承诺的一样,苹果贴出了Swift语言的源码,...
本文由@Chun发表于Chun Tips :http://chun.tips/blog/2014/12/11/shi-yong-swift-gou-jian-zi-ding-yi...
本文由CocoaChina译者leon(社区ID)翻译 原文:THE RIGHT WAY TO WRITE A SINGLETON 在之前的帖子里聊过...
本文由CocoaChina译者leon(社区ID)翻译 原文:THE RIGHT WAY TO WRITE A SINGLETON 在之前的帖子里聊过...