设为首页 加入收藏

TOP

[Swift] Day01:Swift 中的基本运算符
2014-11-23 19:00:29 】 浏览:7409
Tags:Swift Day01 基本 运算

今天主要看的内容是 Swift 中的基本运算符。记录一下。

空值合并运算符 (Nil Coalescing Operator)

a b 中的 就是是空值合并运算符,会对 a 进行判断,如果不为 nil 则解包,否则就返回 b

使用的时候有以下两点要求:
- a 必须是 optional 的
- b 必须和 a 类型一致

也就是说,a 一定要有被备胎的可能,b 一定要有做备胎的资格。

其实也就是对三目运算符的简写:

a != nil a! : b 或者 a == nil b : a!

区间运算符

区间运算符分为闭区间 (...) 和左闭右开区间 (..<) 两种,前者是算头算尾,后者是算头不算尾。

区间运算符其实返回的是一个 Range 对象,是一个连续无关联序列索引的集合。

话说以前左闭右开是 .. ,这样和 Ruby 的就刚好完全相反了。。。

不过有人就是想用 .. ,那么可以这样自己写一个:

infix operator .. { associativity none precedence 135}

func .. (lhs: Int, rhs: Int) -> Range
   
     { return lhs..
    
   

你也可以用 generate() 来遍历:

var range = 1…4 var generator = range.generate() // {startIndex 1, endIndex 5} generator.next() // 1 generator.next() // 2 generator.next() // 3 generator.next() // 4 generator.next() // nil

.generate() 返回一个 RangeGenerator 的结构体,可以用来遍历 Range 中的值。

以前还有个 (5...1).by(-1) 的用法,不过现在好像没用了。

三、其他
嗯今天时间有限就先写这些吧。

总的来说运算符方面基本没太多差别,倒是区间部分有点像是 Ruby或Haskell 的语法,不过在 Haskell 中Range 可以这样用:

ghci> [‘a’..’z’] “abcdefghijklmnopqrstuvwxyz”

而在 Swift 里,... 这三个点似乎把字符串拼接起来了:

let bb = [“a”…“z”] println(bb[0]) // 打印 [“a…z”]

试验一下,确实是这样,... 可以把两个字符串拼接起来:

let bb = “a”…“z” println(bb)// 打印:”a…z”

嗯今天就先到这里,睡觉。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java数据结构学习笔记之栈和队列.. 下一篇ImageView根据手势进行缩放,拖动

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目