博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift 语法初窥
阅读量:6983 次
发布时间:2019-06-27

本文共 2507 字,大约阅读时间需要 8 分钟。

References:

某程序员对书法十分感兴趣,退休后决定在这方面有所建树。于是花重金购买了上等的文房四宝。一日,饭后突生雅兴,一番磨墨拟纸,并点上了上好的檀香,颇有王羲之风范,又具颜真卿气势,定神片刻,泼墨挥毫,郑重地写下一行字:hello world

print("Hello, World")复制代码

值与类型

定义变量用 var,常量用 let。常量只能赋值一次,但不用必须在声明的时候去赋值。

var myVariable = 42myVariable = 50let myConstant = 42复制代码

编译器会自动推断常量和变量的类型,但是如果推断不出来(比如说没有初始值等),就需要声明类型。

let helloTalk : StringhelloTalk = "helloTalk"let helloTalk = "helloTalk"复制代码

Swift的值不会隐式被转为其他类型

let widthFloat = 93.33          // 自动推断 为 Doublelet width : Int = widthFloat    // 把 Double 赋值给 Int,会报错let widthLabel = label + String(width)// 把值转换成字符串还可以这样: \(ValueName)let widthString = "width: \(width)."复制代码

创建、定义一个数组或者字典

let emptyArray = [String]()let emptyDictionary = [String: Float]()// 或者let emptyArray = []let emptyDictionary = [:]复制代码

数组和字典都是集合类型,对于这种类型的 letvar 修饰并非是像普通值的可否赋值。 比如说,用 let 修饰的数组是不能添加和移除数组中的元素,数组中的元素个数、位置均不可变,但是用 var 修饰的数组可以添加/删除元素。

枚举

枚举是为一组相关的值定义了一个共同类型,在 Swift 中,枚举是“一等公民”。枚举成员的原始值不仅可以是整形,还可以是字符、字符串、浮点型;此外,枚举还支持属性、方法、甚至是构造函数、扩展和遵守协议。

enum 关键词来创建枚举:

enum Direction {    case north    case south    case east    case west}// 或者用逗号分隔写作一行:enum Direction {    case north, south, east, west}let direction: Direction = .west复制代码

原始值

enum Direction: String {    case north = "北"    case south = "南"    case east = "东"    case west = "西"}let north = Direction.north     // the sanme as : let north = Direction(rawValue: "北")north.rawValue  // "北"复制代码

关联值

Swift 的枚举可以存储各个类型的关联值,而且每个成员的类型可以都不一样。所以对于一个网络请求可以有这样的抽象:一个网络请求的结果,可以是成功或者失败的,如果成功则返回的是我们想要的数据,不成功返回错误原因,那么可以写成这样:

enum Result
{ case success(Value) case failure(Error)}复制代码

Value 是泛型语法,可以是任何你需要的类型。

控制流

for-in

let persons = ["person1","person2"]for personString in persons {  print(personString)}// 遍历字典let dict = [            "name" : "Joke",            "age"  : 16        ] as [String : Any]        for (key,value) in dict {  print("\(key) : \(value)")}复制代码

if-else

if 2>1 {  print("2 大于 1")}else{  print("2 还是大于 1 啊")}复制代码

if 后面必须是布尔表达式,如果是一个值的话不会隐式的与 0 比较。

switch

let vegetable = "red pepper"switch vegetable {case "celery":  print("Add some raisins and make ants on a log.")case "cucumber", "watercress":  print("That would make a good tea sandwich.")case let x where x.hasSuffix("pepper"):  print("Is it a spicy \(x)?")default:  print("Everything tastes good in soup.")}复制代码

switch 不仅支持基本数据类型。另外Swift中的switch语法可以省略break。但是不能省略 default,会报 Switch must be exhaustive, consider adding a default clause 的编译错误。

while

var i = 1while i<100 {  i += 1}// 或者var i = 1repeat{  i += 1}while i < 100复制代码

我的博客:

转载地址:http://qttpl.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
如何使用网络库实现应用级消息收发
查看>>
Single Area OSPF
查看>>
rhel6之yum
查看>>
selenium+ant+testng测试框架简单介绍
查看>>
自己写的DBUtil数据库连接工具类
查看>>
登录多实例MySQL失败,修改密码临时解决,原因不明
查看>>
SCCM 2007 R2部署、操作详解系列之部署篇
查看>>
hystrix thread pool Metrics
查看>>
MDT2012部署问题,MDT中的驱动是如何工作的
查看>>
Selenium 使用要点记录<二>
查看>>
Windows与Linux系统拷贝文件之pscp的使用
查看>>
_xmlXPathNewContext", referenced from
查看>>
Netty3之ServerBootstrap分析
查看>>
小木木的Python学习笔记
查看>>
用SQL语句添加删除修改字段
查看>>
运维少年系列 python and cisco (1)
查看>>
c#时间转换
查看>>
调度器Quartz的简述与使用总结
查看>>
smokeping 安装
查看>>