Swift (关键字详解)

Swift

  • 计算型属性(computed property)

       var valueT: Double {
           get {//get方法在读值的时候调用
               return     NSNumberFormatter().
               numberFromString(labelText.text!)!.doubleValue
           }
           set {//set方法在赋值的时候调用
               labelText.text = “\(newValue)”//newValue即get中return的值
           }
       }
       Declaration var valueT: Double { get set }
       Declared In ViewController.swift
    
  • 闭包(closure): 用来接收参数和返回参数,类似于函数,但是没有函数名

       var operators: String = “/“, num1 = 2.0, num2 = 1.0, answer: Double!
       func operatorOnTheNum(operators: (Double, Double) -> Double ) -> Double {
           return operators(num1, num2)
       }
       switch operators {
       case "+": answer = operatorOnTheNum  {$0 + $1}//opaeratorOnTheNum({(opt1: Double,opt2: Double) -> Double in return opt1 + opt2 })的极简形式
       case "-": answer = operatorOnTheNum  {$0 - $1}
       case "*": answer = operatorOnTheNum  {$0 * $1}
       case "/": answer = operatorOnTheNum  {$0 / $1}
       default: break
       }
    
  • mutating:在结构体和枚举这两种类型中,实例方法只有通过mutating才可以属性的。

       protocol Togglable {
           mutating func toogle() 
       }
       enumeration OnOffSwitch: Togglable {
           case Off, On
           mutating func toogle() {
               switch self {
               case On:
                   self = On
               case Off:
                   self = Off
               }
       }
    
  • @auto_closure

       func simpleAssert(x: Bool) {
           let a = 0
           if a & x {
               ……
           } else {
               ……
           }
       }
       simpleAssert(someExpensiveComputation() !=42)
       
       **当我们通过上述代码调用simpleAssert函数是,我们不得不每次都需要调用someExpensiveComputation ()!=42的值是真是假,那么怎么样能做到延迟求值。**
       
       func simpleAssert(condition: () ->Bool, y: Bool, message: String) {
           if (y && !condition()) {//当为False时,那么整个式子的式子的值也为False那么在这种情况下是不会调用condition的
               println(message)
           } else {
               println("!= 42")
           }
       }
       func someExpensiveComputation() -> Int {
           return 41
       }
       simpleAssert(false, {someExpensiveComputation() != 42},"==42")
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值