• swift笔记(二) —— 运算符


    基本运算符

    Swift支持大部分的标准C语言的操作符,而且做了一些改进,以帮助开发人员少犯低级错误,比方:
    本该使用==的时候,少写了个=, if x == y {…} 写成了 if x = y {…} 你就悲剧了
    在使用 +,-,*,/ 的时候,得到的结果溢出了。你还是悲剧了。要做非常多检查保证不溢出才行
    然而,在Swift中,我们再也不用操心这些问题了。编译器会帮我们搞定的
    Swift还提供了两个C语言中没有的二元操作符 .. 和 …
    接下来,我们就来看看Swift中的使用方法

    术语(原文中专门列出来) 什么是一元运算符,二元运算符,三目执行符,这里我就不列了。


    赋值执行符 (=)
    赋值运算符 (=)(感谢 swift技术交流第一平台(355277)的群友 夕颜(1651150754) 指出错别字 )
    var a = 5
    let b = 10
    a = b   //不解释

    重点出现。元组赋值:
    let (x, y) = (1, 2)  //x = 1, y = 2 是一样一样的

    可是假设把=写在if 里,在Swift中是通只是编译的,以后再也不用操心错把== 写成 =了
    if x = y {…}  //这里编译器会提示:Type ‘()’ does not conform to protocol ‘LogicValue’
    也就是说编译器并不觉得赋值操作符是个Bool表达式

    算术执行符
    算术运算符(感谢 swift技术交流第一平台(355277)的群友 夕颜(1651150754) 指出错别字 )
    1 + 2
    5 - 3
    2  *  3
    10.0 / 2.5
    这些写法和C无异,可是,Swift编译器会检查运算结果是否会溢出, 比方:
    var myUInt:UInt = 1
    myUInt = myUInt - 2  //编译器会提示: Arithmetic operation ‘1-2’(on type’UInt’) results in an overflow

    但有些特殊时候。我们须要它溢出的时候怎么办呢?
    Swift提供了,能够溢出的运算符: &-  这个先不细说。在最后的章节里,有讲溢出规则的时候再说吧

    运算符+同一时候也支持字符串的连接。如:
    “hello, “ + “kitty” //等同于 “hello, kitty"

    求余数运算符(%)
    9 % 4 的结果是1 //有些语言里求余数运算,用的是mod
    这里须要注意的是 假设是负数运算,比方
    9 % -4  的结果依旧是1,想要得到正确的结果,非得写成:
    -9 % 4 不可
    当然,-9 % -4 与 -9 % 4的结果是一样的。执行符后面的符号是被忽略的

    另外,在Swift中,浮点数也能够使用 % 来做求余数运算了,这是C和Objective-C里是不能够的
    8 % 2.5  //得到结果0.5

    自增与自减运算符
    跟C语言中的一样,好吧,又会涌现出一大批脑残面试官要用 a++和 ++a来折腾人了
    反正在项目中,要是敢拿a++和 ++a来开玩笑写easy混淆代码的人。2话不说,直接开除就对了
    (连代码是给人读的。不是给机器读的的道理都不明确。还写什么代码)

    一元运算符
    没啥能够说的…幼儿园小朋友都知道在 3前面加一个减号,他就是-3了...

    复合运算符
    又是和C里面一样
    var a = 1
    a += 2  //a的值是3

    比較运算符(返回Bool型)
    推断等于  ==
    推断不等于 !=
    推断大于 >
    推断小于 <
    推断大于等于 >=
    推断小于等于 <=
    这些运算符不仅能够用于数值,也能够用于字符串的推断
    除此之外。Swift还提供了两个新的比較运算符 === 和 !=== 用于推断两个引用是否指向了同一个对象,这个到类和结构体的章节会有样例

    三目运算符(  ? : )
    与C语言一样
    question ?

    answer1 : answer2

    等效于
    if question {
         answer1
    } else {
         answer2
    }

    范围执行符(这样译我认为不合适,更应该叫自己主动扩展)
    .. 与 ...的差别
    用数学的方法描写叙述就是:
    a..b 等效于 [a, b)  //不含b
    a…b 等效于 [a, b]  //含b
    我认为这里又是个坑....好不easy把 = 和 ==的问题给干掉了,又来了个..和... 这两个的问题根源有差别吗?!

    逻辑运算符
    与(&&)
    或(||)
    非(!)   //神经是不是有问题!!!! 在一个语言中。同一个符号在不同位置有两种意思!!! 究竟是几个意思!!! 看着吧,这里又是2B面试官发挥淫相的时机了

    早晚会有人会写出类似这种代码:
    let allowedEntry:Bool?

    = false

    if !allowedEntry! {…}  // 前后都有叹号。究竟是几个意思!!!!再次吐槽一下

    至于不给 a && b || c || d && e 加括号表示优先级的人。再次强烈建议开除



  • 相关阅读:
    精《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #4 如何使用Git
    《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #3 如何编写内核模块
    《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #2 如何编译Linux内核
    《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #1 如何获取Linux内核
    [失败]SystemTap和火焰图(Flame Graph)
    yum安装nagois
    yum安装cacti
    笔记本制作centos qcow2格式文件
    【失败】CentOS 6.5安装VNCserver 并开启远程桌面
    Linux 性能分析的前 60 秒
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5413564.html
Copyright © 2020-2023  润新知