Swift学习笔记2——基本类型和基本运算

基本类型

其实和C差不多,也就是那几个。多出来的是Tuple和可选类型这两个概念


数字类型

这里记录一下每个类型的大小。

Int 在32位机器上是Int32 ,在64位机器上是Int64. 除了Int之外,还有Int,Int8,Int16,Int32,Int64.

UInt在32位机器上是UInt32 ,在64位机器上是UInt64.   除了UInt之外,还有UInt8,UInt16,UInt32,UInt64.

Double  64位浮点数

Float  32位浮点数

Swift不支持数字类型之间的自动转换。必须显式手动转换。

var i: Int = 2_000   //这个表示2000
var d: Double = 5.3
var e = d * Double(i)
 

不同进制的前缀

十进制       没有

二进制        0b

八进制        0o

十六进制     0x

科学计数

1.25e2 代表  1.25乘上10的2次方

0xFp2  代表   15乘上2的2次方

typealias 关键字,用来个类型起别名

typealias ii = Int8
var mm = ii.min //这里的ii代表了Int8

Boolean 类型

Swift和java一样,对boolean类型是强要求的,不能在if里面传一个整形用于判断。



新类型——元组(Tuple)

其实就是一群数据组合,可以将其解出来输出。注意的是tuple不只是两个元素,你可以自己扩展成多个元素。

var menu = ("apple", 20)  //定义一个Tuple
var menu2 = (name: "banana", price:10)  //可以在定义的时候指定元素名字
let (name,price) = menu   //解Tuple,如果某个元素不想要的话,用 _ 代替
print(name, price)   //输出  apple 20
print(menu.0,menu.1)  //不解Tuple直接输出
print(menu2.name,menu2.price)  //利用元素名字解Tuple


可选类型(Optionals)

当一个方法可以返回一个对象的时候,它有可能返回一个空值。比如将字符串转换为数字的方法。为了处理这种情况,有了可选类型。

可选类型表示一个数据,它可能有值,也可能为空。基本语法是在类型的后面加上问号 ?

比如下面的代码

var str:String
print(str)  //这里报错说str没初始化
但是如果将str改为可选类型,那么这就可以输出了

var str:String?
print(str)  //输出 nil

那怎么将一个可选类型转换为对应的类型呢?这里有个强制解包的概念,使用 ! 对可选类型解包。请看下面代码。 强制解包有个注意点,就是如果这个可选类型是nil的话,那么强制解包的语句会在运行时报错。

var str:String? = "fe"
var s = str! //将str解包为s,但是如果str没有赋值的话,那么这句会在运行时报错
print(s)

为了解决强制解包的时候,可选类型可能为nil的问题。if语句里面多了一个 Optional Binding 的概念。就是将可选类型解包后判断是否为nil,然后执行不同的分支代码

//因为没给str赋值,所以输出  str为空
var str:String?
if let s = str {
    print("str有值")
} else {
    print("str为空")
}


        如果在编程中,我们可以确保可选类型一定不为nil的,那么每次要将可选类型解包都要加个 !,很麻烦。所以有了隐式可选类型,它是用 ! 代替了 ? 号。然后在需要将可选类型转换为对应类型的时候就不用加 ! 了

var str:String! = "string"
var s = str



基本运算

一些和C完全一样的基本运算如下

加减乘除,负号,自增(++)自减(--),+=等, 判断大小之类(==,!=,>=...),三元运算符,逻辑运算(!,&&,||)


不一样的运算符

取模%,在C中,只能对整形进行运算,Swift中可以对浮点数进行运算。结果就是多出来的那部分

比如 7.1%2.5  得到2.1,因为7.1可以最多减去2个2.5,然后剩下2.1


范围运算符 ... 和 ..< 这两个运算符可以用在for里面。比如

//输出 1 2 3    包含最后一个元素3
for i in 1...3 {
    print(i)
}
//输出 1 2  不包含最后一个元素3
for i in 1..<3 {
    print(i)
}


单范围运算符

对于下标运算可以这样用。

let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names[2...] {
    print(name)
}
// Brian
// Jack
 
for name in names[...2] {
    print(name)
}
// Anna
// Alex
// Brian
for name in names[..<2] {
    print(name)
}
// Anna
// Alex



??

这是一个二元运算符,例子 a ?? b

它的意思是:如果可选类型a不是nil,那么解包a并返回解包值,如果a为nil,那么返回b

相当于 a != nil ? a! : b

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值