Swift中没有默认(T)吗?

前端之家收集整理的这篇文章主要介绍了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相关文章