基本操作符

操作符就是一个简单的符号或者短语,你可以用他们来检查、改变、组合数据。举例说明,加操作符(+)把两个数字加到一起。更复杂的操作符例子有AND操作符(&&)还有自增操作符++。
Swift支持标准C的大多数操作符而且有若干改进可以避免代码错误。比如赋值操作符(=)不返回一个值,这样就避免了在想要使用比较操作符(==)时错误的使用了等号。算数运算符(+,-,*,/,%)会检测并且不接受溢出的数据,你可以选用Swfit的溢出操作符(overflow operators)预防这种情况出现。
像C一样,Swift允许你对浮点数取余,同时Swfit也提供了两个C没有的范围操作符(a..

术语

操作符有一元、二元以及三元的:
一元操作符只有一个操作对象(比如 -a)。一元前缀操作符放置在对象之前(!b ),一元后缀操作符放置在对象之后(i++);
二元操作符操作两个目标(such as 2 + 3),必然的操作符要出现在二者之间;
三元操作符有三个操作目标,和C一样,Swift只有一个三元操作符:三元条件操作符(a ? b : c)

操作符影响的那些个值叫做操作数。以表达式1+2为例,+是二元操作符,+的两个操作数分别是数值1和数值2.

赋值操作符(=)

元组的赋值,分解到对应元组成员、
赋值语句不返回值,避免使用==的时候误用了=

算数操作符(+-*/)

不同于C 和OC,Swift的算数运算符不允许溢出了,必要时你要使用溢出操作符(overflow operators)
+比较例外,可以用在字符串拼接的情形

取余操作符

其他语言称之为模运算,但是考虑到Swfit对负数的这类操作(负数是第一个操作数),还是叫做取余操作比较好。
a % b的意思是a = (b × some multiplier) + remainder 这个等式成立, some multiplier选取最大的的合适倍数后返回的 remainder ;​
9​ % ​4​ 对应为9 = (4 × 2) + 1,结果为1,同理-9%4对应为-9=(4*-2)-1结果为-1

b是正负数都可以,b无论正负,结果和b是正数的情况一样。

浮点数取余操作(浮点数做第二个操作数)

这点和C和OC不同,Swift支持浮点数做操作数的取余操作。
​8​ % ​2.5​ ​// equals 0.5

自增自减操作符(++ – 前后缀组合)

没啥说的

一元取负操作符(-)

切换操作数的符号(正负)。The unary minus operator (-) is prepended directly before the value it operates on,without any white space.

一元取负操作符使用后会被优先生效,不要和操作数之间留任何空白。

一元取正操作符(+)

没有任何作用,写着对称好玩吧。

复合赋值操作符(+= -=)

不返回值哦

比较操作符(== != > < >= <=)

Swift有身份操作符=== 、!==,可以用它来判断是否两个引用指向同一个对象。
==、!=可以用在字符串比较上

三元操作符(question ? answer1 : answer2)

尽管用着方便,但尽量避免使用过度造成的阅读困难。

Nil联合操作符(a ?? b)

这个操作会判断一个可选类型是否有值,如果有值则返回解包的值;如果没有值,则返回一个默认值。a必须是个可选类型,b的类型必须和a的类型匹配。
a ?? b 等价于​a​ != ​nil​ ? ​a​! : ​b

封装了nil检查和解包过程,简练而且易读。
如果a不是nil,b不会求值计算,这就是短路原则。

范围操作符

闭值域操作符

表示从a到b的范围(包括a和b),要确保a不能大于b。
最常用的场景是配合for in 的使用

for​ ​index​ ​in​ ​1​…​5​ {
​ ​println​(​”​(​index​)​ times 5 is ​(​index​ * ​5​)​”​)
​}
​// 1 times 5 is 5
​// 2 times 5 is 10
​// 3 times 5 is 15
​// 4 times 5 is 20
​// 5 times 5 is 25

半开值域操作符

表示从a到b的范围(包括a,不包括b),要确保a不能大于b。
最常用的场景是对以0为第一位置的列表进行计数操作时,因为这种情况不能访问到长度值作所在的位置。

​let​ ​names​ = [​”Anna”​,​”Alex”​,​”Brian”​,​”Jack”​]
​let​ ​count​ = ​names​.​count
​for​ ​i​ ​in​ ​0​..<​count​ {
​ ​println​(​”Person ​(​i​ + ​1​)​ is called ​(​names​[​i​])​”​)
​}
​// Person 1 is called Anna
​// Person 2 is called Alex
​// Person 3 is called Brian
​// Person 4 is called Jack

逻辑操作符(!a、a && b)

逻辑操作法修改或者组合不二类型的值。Swift提供了三种和C一样的逻辑操作符。

逻辑非符(!a)

前缀操作符,和操作数之间不能有空格。读作“not a”。
给操作数起好的名字是个好习惯,简明易懂,避免做双重否定或者让人迷惑的逻辑语句。

逻辑与符(a && b)

逻辑与创建了一个逻辑表达式,而且在两条语句都为真才会得到真。短路原则在第一个语句为false时起作用,第二个语句就不被求值计算了。

逻辑或符(a || b)

逻辑或创建了一个逻辑表达式,只要有其中一条语句为真就会得到真。如果左边的语句为真了,右边的语句就不会被求值计算了。这也是短路的一种情况。

组合逻辑操作符

多个逻辑操作符可以连接使用。
避免出错加的括号

[翻译]Swift编程语言——基本操作符的更多相关文章

  1. ios – 无法识别的选择器发送到实例NSTimer Swift

    解决方法让updateTime成为一个类方法.如果它是在一个纯粹的Swift类中,你需要在@objc前面说明该方法的声明,如:

  2. iOS &gt;&gt;块&gt;&gt;更改块外部的变量值

    我不是在处理一个Object并改变它,就像我的mString一样.我希望’center’属性的行为类似于myInt,因为它是直接访问的C结构,而不是指向对象的指针.我希望’backgroundColor’的行为类似于我的imstring,因为它是一个指向一个新对象的对象的指针,不是吗?

  3. ios – 类型推断(自动类型检测)如何在swift中工作?

    LLVM如何检测变量是一个字符串?

  4. ios – Swift可选项:语言问题,还是做错了什么?

    应该有可选的类型;type是但是,如果我这样做,它的工作原理:它似乎是基本的替代,但我可能会遗漏一些语言的细微差别.谁能对此有所了解?之后就像暧昧一样,更多,这是我的解决方案:这适用于所有非对象Swift对象,包括Swift字符串,数字等.感谢Viktor提醒我String不是Swift中的对象.如果您知道值的类型,您可以替换任何?使用适当的可选类型,如String?

  5. ios – 覆盖Swift中的超类委托

    我正在开发一个包含两个UIViews的Swift(v1.2)项目.MyView和MyViewSubclass.MyView有一个委托,我想在MyViewSubclass中覆盖它作为一个子协议,类似于UITableViews有一个UITableViewDelegate,它也符合超级uiscrollviewdelegate.我的第一个想法是覆盖超类属性,但这会导致编译器错误,因为子类不能覆盖具有不同类

  6. ios – 我可以在swift中将字符串转换为代码块吗?

    有没有办法将字符串转换为代码块?

  7. ios – Swift:方法重载只在返回类型上有所不同

    我一直在看Swift类,其中定义了两种方法,它们的返回类型不同.我不习惯使用允许这种语言的语言,所以我去寻找描述它如何在Swift中工作的文档.我在任何地方都找不到任何东西.我本来期望在Swift书中有关于它的整个部分.这记录在哪里?

  8. xcode – Interface Builder的用户定义的运行时属性不接受浮点数?

    我创建了一个具有float属性的NSView子类,我想在InterfaceBuilder中设置它.在用户定义的运行时属性部分中,唯一合适的类型是数字.但是,如果我想输入一个十进制数,它只是舍入到最接近的整数.这是一个bug还是故意的?解决方法使用字符串类型并输入您的值

  9. ios – 字符串资源Xcode swift

    我是iOS开发和Swift语言的新功能.而且我尝试制作简单的iOS应用程序,我需要在应用程序中使用一些字符串资源.当然,我可以将这个字符串放在我的*.swift文件中作为常量,但我认为这是一个坏的方法.我该怎么做?

  10. IOS键盘默认按钮翻译

    实际上,我只需要在十进制键盘上将“done”/“pref”/“next”按钮翻译成俄语或其他语言.顺便说一下,本地化的应用程序在俄语中.此外,当我改变本地化语言时,所有其他按钮,如“取消”在其他控件被自动翻译.但不是这样.可以不经过定制吗?

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部