zoukankan      html  css  js  c++  java
  • Swift中的Void类型与空元祖表达式

    可能有不少Swift开发者会忽略这么一个细节:在Swift中,Void类型其实是一个别名类型,而其真正的类型为(),即一个空元祖(empty tuple)!

    这种语言特性给Swift带来了一些比较方便的表达方式。当()作为函数返回类型时,它作为一个类型;当它作为一个表达式时,则表示一个空元祖。这样,我们在返回类型为()(或Void)的Swift函数中可以,最后返回一个不干任何事的空元祖,这在三目表达式中尤为有用。请看以下代码:

    var sss = 0
    
    func MyFunc() -> () {
        return sss == 0 ? (sss = 100) : ()
    }
    
    func MyFunc2() -> Void {
        return sss > 0 ? sss += 100 : (sss += 0)
    }
    
    
    class ViewController: NSViewController {
        
        override func viewDidLoad() {
            super.viewDidLoad()
            
            MyFunc()
            print("sss = (sss)")
            
            MyFunc2()
            print("sss = (sss)")
        }
    }

    上述代码中,首先要提醒各位的是,三目表达式中的 : 操作符的优先级要大于 += 操作符,因此这里(sss += )需要加括号,否则就变成了(sss > 0 ? sss += 100 : sss) += 0了。其次,像 =、+=、-=等等操作符都返回Void,因此如果我们返回一个非Void的值要把它转为Void,用 += 0之类的能做间接转换。

    当然,Void只能作为类型,而不能作为表达式来用。

  • 相关阅读:
    C#基础知识简单梳理
    knearest neighbor
    二叉查找树的实现
    Unix/Linux 那些系统启动后的进程
    Nginx反向代理IIS
    线程漫谈——线程同步之信号量和互斥量
    BtxCMS@B.T.X 项目及界面展示 [下载]
    MVC in MFC or WTL
    HTTP HTTPS WebService
    ASP.NET WebAPI RC 竟然不支持最常用的json传参
  • 原文地址:https://www.cnblogs.com/zenny-chen/p/5634624.html
Copyright © 2011-2022 走看看