美文网首页
Swift语法 -- [10 - 下标]

Swift语法 -- [10 - 下标]

作者: happy神悦 | 来源:发表于2020-10-23 09:38 被阅读0次

Swift 下标

使用subscript可以给任意类型(枚举、结构体、类)增加下标功能,有些地方也翻译为:下标脚本

  • subscript的语法类似于实例方法、计算属性,本质就是方法(函数)
class Point {
    var x = 0.0, y = 0.0
    subscript(index: Int) -> Double {
        set {
            if index == 0 {
                x = newValue
            } else if index == 1 {
                y = newValue }
        }
        get {
            if index == 0 {
                return x
            } else if index == 1 {
                return y
            }
            return 0
        }
    }
}

var p = Point()
p[0] = 11.1
p[1] = 22.2
print(p.x) // 11.1
print(p.y) // 22.2
print(p[0]) // 11.1
print(p[1]) // 22.2

  • subscript中定义的返回值类型决定了
    • get方法的返回值类型
    • set方法中newValue的类型
  • subscript可以接受多个参数,并且类型任意

1. 下标的细节

  • subscript可以没有set方法,但必须要有get方法
class Point {
    var x = 0.0, y = 0.0
    subscript(index: Int) -> Double {
        get {
            if index == 0 {
                return x
            } else if index == 1 {
return y }
return 0 }
} }

  • 如果只有get方法,可以省略get
class Point {
    var x = 0.0, y = 0.0
    subscript(index: Int) -> Double {
        if index == 0 {
            return x
        } else if index == 1 {
            return y
    }
    return 0 
    }
}

  • 可以设置参数标签
class Point {
    var x = 0.0, y = 0.0
    subscript(index i: Int) -> Double {
        if i == 0 {
            return x
        } else if i == 1 {
            return y
}
return 0 }
}

  • 下标可以是类型方法
class Sum {
    static subscript(v1: Int, v2: Int) -> Int {
        return v1 + v2
    }
}
print(Sum[10, 20]) // 30

2. 接收多个参数的下标

class Grid {
    var data = [
        [0, 1, 2],
        [3, 4, 5],
        [6, 7, 8]
]
subscript(row: Int, column: Int) -> Int {
set {
guard row >= 0 && row < 3 && column >= 0 && column < 3 else {
return
}
data[row][column] = newValue }
get {
guard row >= 0 && row < 3 && column >= 0 && column < 3 else {
return 0 }
return data[row][column] }
} }

var grid = Grid()
grid[0, 1] = 77
grid[1, 2] = 88
grid[2, 0] = 99
print(grid.data)

相关文章

  • Swift语法 -- [10 - 下标]

    Swift 下标 使用subscript可以给任意类型(枚举、结构体、类)增加下标功能,有些地方也翻译为:下标脚本...

  • Swift 5.x - 继承(中文文档)

    引言 继续学习Swift文档,从上一章节:下标,我们学习了Swift下标相关的内容,如下标语法、下标用法、下标选项...

  • iOS开发之Swift篇(11)—— 下标

    目录 版本 下标 语法 应用 版本 Xcode 11.3.1Swift 5.1.3 下标 下标可以定义在类、结构体...

  • Swift语法 Swift5 【10 - 下标】

    作者: Liwx 邮箱: 1032282633@qq.com 源码: 需要源码的同学, 可以在评论区留下您的邮箱 ...

  • swift 下标(下标语法、下标用法)

    类、结构体和枚举都可以定义下标,下标是用于访问集合、列表或序列的成员元素的快捷方式。可以使用下标,设置和获取值,而...

  • 第十二章 下标

    c++下标通过重载操作符operator []实现,swift的下标语法: subscript(index: In...

  • 初探Swift下标语法

    定义下标使用subscript关键字, 形式如下: 只读下标的实现 例: 在上例中,创建了一个TimesTa...

  • Swift subscript下标语法

    下标语法 一般配合 Switch 使用 类、结构体和枚举都可以定义下标,下标是用于访问集合、列表或序列的成员元素的...

  • OC中的对象下标索引

    相信对Swift有一定了解的人都知道它的下标语法.这个语法让类具备了像字典或者数组那样,利用下标获取一些东西的能力...

  • swift 语法 属性 方法 下标 继承

    swift系列课程 promise 类似于 async awit 异步请求等待的操作,可以避免网络请求一层一层嵌套...

网友评论

      本文标题:Swift语法 -- [10 - 下标]

      本文链接:https://www.haomeiwen.com/subject/mfdzpktx.html