swift入门学习笔记

作为ios开发语言,swift是一门新生语言,大部分时代潮流技术也在其中,而且有自己独有的一些技巧在其中,非常值得学习。

收录:原文地址

语法

· 说明

编程语言都是相通的,因此对于基础的语法都是一样。下面主要是对不同的且重要的语法进行了做了笔记,对于已知或类似的语法没有进行细致的说明。

· 基础

变量以及常量

swift用let定义常量,用var定义变量。对于数据类型则swift自行推断(类型推倒在C++中相当于auto这个类型占位符一样)。常量在设定后,将不能再更改它的值,变量则可以。

如果需要指定类型,则使用类型注解:

var welcomeMessage: String
// 一般不需要写类型注解, 在声明常量或者变量的时候赋了一个初始值,Swift 可以推断出这个常量或者变量的类型

常量和变量名可以包含几乎所有的字符,包括 Unicode 字符:

let π = 3.14159
let 你好 = "你好世界"
let 🐶🐮 = "dogcow"

值得注意的是:

a)在实际项目开发中,应该先定义为let类型,如果需要修改时,再修改类型为var

b)let指的是指向的地址不可修改,但是该对象内容是可修改的(常量不可修改)

元组

// 元组定义
// 1. 字面量定义
var tuple1 = (1, 2.0, "string", true)
// 2. 带参数标签的定义
var tuple2 = (parameter1:int, parameter2:double parameter3:String)
tuple2 = (1, 2.0, "string")
let tuple3 = (parameter1: 1, parameter2: "string")
// 元组取值
// 1. 序列号取值
tuple.0, tuple.1, tuple.2
// 2. 标签取值
tuple2.parameter1
tuple2.parameter2

可选类型

让程序更安全!

在OC中,有一种写法。

NSString *str = [obj getSomeStr] ?: @"";

为了保证str不是nil,在赋值时确定一下。swift提供了可选类型,来处理可能缺失的情况。注意可选类型是一个类型。

var surveyAnswer: String? = "123"
// surveyAnswer 可选值为"123""
// 注意:可选类型为类型后面+?

构造器返回值可选值类型

let possibleNumber = "123"
let convertedNumber = Int(possibleNumber)
// 因为该构造器可能会失败,convertedNumber 被推测为类型 "Int?", 或者类型 "optional Int"
// 构造器就是构造函数, 在C++与Java中的叫法

使用if或者while可以进行判断是否有值。这个过程又叫做可选绑定

// 强制解包 
let value = surveyAnswer!
// 强制解包如果没值,则会crash,因此使用强制解包要保证有值

// 可选绑定
// if语法在后面介绍
if let newstring = surveyAnswer {

}

// 隐式展开
// 在确定有值的时候,可以直接解包
var a:Int! = 10
var b:Int = a
// 疑问:已经确定有值,还用可选类型干嘛?如:
// var a:Int = 10
// 解答:用可选类型是因为可以使用nil,如果不是可选类型则不能使用nil。

值类型与引用类型

值类型:当其进行常量、变量赋值操作,或在函数/方法中传递时,会进行值拷贝。

引用类型:增加引用计数,不进行拷贝。

其他

类型别名:

swift中不使用typedef , 且有等号。

typealias AudioSample = UInt16

分号:

在swift中不用使用分号, 但是在同一行的两个语句使用分号.

·运算符

空算运算符

如果 a 包含一个值就进行解包,否则就返回一个默认值 b

a != nil ? a! : b
// a必须是可选类型
// 

区间运算符

Swift 提供了几种方便表达一个区间的值的区间运算符。

闭区间运算符(a…b)定义一个包含从 a 到 b(包括 a 和 b)的所有值的区间。a 的值不能超过 b。

半开区间运算符(a…<b)定义一个从 a 到 b 但不包括 b 的区间。

单侧区间运算符(a…/…b)可以表达往一侧无限延伸的区间

·字符与字符串

Swift 的 String 和 Character 类型提供了一种快速且兼容 Unicode 的方式来处理代码中的文本内容, 因此可以用任何字符。有趣的是,变量或者常量命名可以采用emoji表情或者汉字。

for character in "Dog!🐶" {
    print(character)
}
// D
// o
// g
// !
// 🐶

String是基于 Unicode 标量 建立的. 因此需要了解一下Unicode中的码点, utf-8等概念. 在说到 count和objective-c的length返回的值不一样, 也是由于采取的编码格式不同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值