Swift --- 下标(subscript)

2024-01-22 15:48
文章标签 swift 下标 subscript

本文主要是介绍Swift --- 下标(subscript),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.subscript可以给任意类型(class/struct/enum)添加下标功能

2..subscript中定义的返回值类型决定了

get方法的返回值类型

set方法中newValue的类型

3.subscript可以接受多个参数,并且类型任意

subscrip(v1: Int, v2: Int) -> Int

4.subscript可以没有set方法,但必须要有get方法

5.subscript可以设置参数标签

subscript(index i: Int) -> Double

6.subscript可以是类型方法

static subscript(index: Int) -> Double

例:

class Point {var x = 0.0, y = 0.0subscript(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

和nonmutating组合应用:

protocol NSUserDefaultsSubscipt {subscript(key: String) -> AnyObject? { get nonmutating set }
}
extension NSUserDefaults:NSUserDefaultsSubscipt {subscript(key: String) -> AnyObject? {get { return objectForKey(key) }set { setObject(newValue, forKey: key) }}
}
let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
defaults["key"] = "value"

 

这篇关于Swift --- 下标(subscript)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/633445

相关文章

Swift知识点---RxSwift学习

1. 什么是RxSwift RxSwift是Swift函数响应式编程的一个开源库,由Github的ReactiveX组织开发、维护 RxSwift的目的是:让数据/事件流 和 异步任务能够更方便的序列化处理,能够使用Swift进行响应式编程 RxSwift本质上还是观察者模式,并且是一个响应式的,并且可以序列化的 观察者模式 观察者模式包括:KVO、通知等 爸爸妈妈照看观察宝宝 其中,

王立平-- Swift

Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束。Swift采用了安全的编程模式和添加现代的功能来是的编程更加简单、灵活和有趣。界面则基于广受人民群众爱戴的Cocoa和Cocoa Touch框架,展示了软件开发的新方向。     Swift已经存在了多年。Apple基于已有的编译器、调试器、框架作为其基础架构。通过ARC(Au

The `XXXUITests [Debug]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build......

出现的警告: [!] The `ColorInHeartUITests [Debug]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-ColorInHeart-ColorInHeartUITests/Po

swift快捷键大全

1. 文件 CMD + N: 新文件 CMD + SHIFT + N: 新项目 CMD + O: 打开 CMD + S: 保存 CMD + SHIFT + S: 另存为 CMD + W: 关闭窗口 CMD + SHIFT + W: 关闭文件 2. 编辑 CMD + [: 左缩进 CMD + ]: 右缩进 CMD + CTRL + LEFT: 折叠 CMD + CTRL + RIGHT:

自学Swift之打印输出

所有编程语言都有的函数打印输出: print()         // 不换行输出 println()      // 换行输出       print 和 println 函数可以直接打印基本类型 var num = 10 println("hello " + (String)num)   // 方式1: 其他类型同String输出的时候需要强转 printl

Swift项目#if DEBUG不生效

在新建的iOS项目中 代码里使用#if DEBUG不生效 解决办法: 在Xcode中给项目添加Debug标识符 点击“Build Setting”搜素Swift Compiler - CustomFlags打开Active Compilation Condition添加Debug标记为“DEBUG”

Swift 3.0 学习 -- 大写和小写字符串(Uppercase and Lowercase Strings)

在swift2.0的时候,您可以通过字符串的uppercaseString和lowercaseString属性来访问大写/小写版本的字符串。如下:

Swift 3.0 学习 -- 计算字符数量 (Counting Characters)

在swift2.0的时候,可以通过调用全局countElements函数,并将字符串作为参数进行传递,可以获取该字符串的字符数量。如下: let unusualMenagerie = "Koala, Snail, Penguin, Dromedary"print("unusualMenagerie has \(countElements(unusualMenagerie)) charact

swift 中“?”和“!”区别以及相关用法

最近也在学习swift的只是,已经是学完了闭包的用法,但回头想想之前学的一些知识感觉又望的差不多了。现在自己总结一些swift中?、!和as的相关用法。废话不多说了直接来吧! 一、swift语言使用var定义变量,但和别的语言不同,swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化。如果在使用之前不进行初始化的就会报错:           其

Module compiled with Swift 版本号 cannot be imported by the Swift 版本号 compiler

今天把xcode升级到12.5最新版,然后编译出现下面错误。。。记录下 XCTestWD:Module compiled with Swift 5.3.1 cannot be imported by the Swift 5.4.2 compiler: /Users/liyinchi/TestTool/node-v12.18.3-darwin-x64/lib/node_modules/app-in