2.5 Swift赋值运算符,溢出运算符, 空合并运算符 ??
来源:互联网 发布:java审批流程实现 编辑:程序博客网 时间:2024/05/03 21:54
/**
赋值运算符
= += %= *= /=
本质上是对内存的写操作
*/
let b =10
var a =9
var d:Int
a = 6
// c语言中可以这样子,但是在swfit中表达式 a = 6是没有值的
// 在swift中禁止连续赋值
// d = a = 6
print("a的值\(a)")
print("a = 6表达式的值==\(a = 6)")
// 加括号的连续赋值都不行的呀
// d = (a += 6)
/**
像这种就会报错的
因为Swift的赋值操作并不返回任何值。
这个特性防止程序员将 c == 6的判断误写成 c = 6,减少了常规的编码错误
Use of '=' in a boolean context, did you mean '=='?
*/
// if c = 6 {
// print("lalla")
// }
/**
溢出运算符 &+ &- &*
*/
var c =UInt8.min
/**
Arithmetic operation '0 - 1' (on type 'UInt8') results in an overflow
*/
// c = c - 1
c = c &- 1
print("c==\(c)")
/**
c==255
*/
/**
Swift中可以对浮点数求余
*/
/**
'%' is unavailable: Use truncatingRemainder instead
现在不可以直接这样写了
let rem = 10 % 2.3
*/
let rem =CGFloat(10).truncatingRemainder(dividingBy:2.3);
print("rem==\(rem)")
/**
rem==0.800000000000001
remainderA is '1.0'.
remainderB is '2.1'.
*/
var remainderA =CGFloat(3).truncatingRemainder(dividingBy:2);
print("remainderA is '\(remainderA)'.")// 输出 remainderA is '1'
var remainderB =CGFloat(5.2).truncatingRemainder(dividingBy:3.1)
print("remainderB is '\(remainderB)'.")// 输出 remainderB is '2.1'
/**
空合并运算符 (a ?? b)将对可选类型a进行空判断,如果a包含一个值就进行解封,否则就返回一个默认值b。
两个条件:表达式a必须是可选类型,默认值b的类型必须要和a存储值的类型一致
在 Swift中有一个非常有用的操作符,可以用来快速的对 nil进行判断。
??
这个操作符可以判断当左侧的值是非 nil时 Optional值时返回其value,
左侧为nil时返回其右侧的值。比如
*/
var level:Int?
var startLevel =1
var currentLevel = level ?? startLevel
print("currentLevel==\(currentLevel)")
let name:String? = "老王"
let name1:String? = nil
// ?? 运算符的优先级低于 +号,注意使用的时候加上括号啊
print(name ??"" +"你好")
print(name1 ??"" +"你好")
addNumber(x:3, y: nil)
func addNumber(x:Int?, y: Int?) ->Void {
// 1.强制解包有风险
// print(x! + y!)
// 2.使用 if判断,但是如果直接使用if,参数很多的时候,会使代码很丑
if x !=nil && y != nil {
print(x! + y!)
} else {
print("x 或者 y为nil")
}
// 使用运算符 ??
print((x ?? 0) + (y ??0))
}
- 2.5 Swift赋值运算符,溢出运算符, 空合并运算符 ??
- Swift溢出运算符
- 空合并运算符
- swift笔记-赋值运算符
- php7空合并运算符
- 【C#】空合并运算符 ??
- Swift 空合运算符
- Swift溢出运算符及高级运算符扩展
- Java运算赋值运算符
- Swift的算术运算符和赋值运算符
- Swift中的"可溢出"算术运算符
- C#的空合并运算符(??)
- 重载赋值运算符
- 重载赋值运算符
- 重载赋值运算符
- 赋值运算符
- 布尔赋值运算符
- 复合赋值运算符
- AWS服务和使用简介
- R-CNN论文详解
- 用yum查询想安装的软件
- HBase写数据
- AngularJS 动态加载控制器实例-ocLoazLazy(二)
- 2.5 Swift赋值运算符,溢出运算符, 空合并运算符 ??
- 通过js的方式获取客户端ip地址
- Linux虚拟网络接口 Bond详解
- 设计模式之建造者模式
- 荒岛求生第六关
- 关于ClippingNode
- codeforces contest 359
- WEUI弹出层
- Windows下LAMP环境搭建