加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift中没有默认(T)吗?

发布时间:2020-12-14 05:34:10 所属栏目:百科 来源:网络整理
导读:我试图将斯威夫特书中的“矩阵”示例移植到通用. 这是我到目前为止 struct MatrixT { 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 * col
我试图将斯威夫特书中的“矩阵”示例移植到通用.

这是我到目前为止

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).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读