计算型属性(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 {protocol Togglable { mutating func toogle() } enumeration OnOffSwitch: Togglable { case Off,On mutating func toogle() { switch self { case On: self = On case Off: self = Off } }+ }//opaeratorOnTheNum({(opt1: Double,opt2: Double) -> Double in return opt1 + opt2 })的极简形式 case "-": answer = operatorOnTheNum {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")- } case "*": answer = operatorOnTheNum { * } case "/": answer = operatorOnTheNum { / } default: break }
mutating:在结构体和枚举这两种类型中,实例方法只有通过mutating才可以属性的。
@auto_closure
总结以上是内存溢出为你收集整理的Swift (关键字详解)全部内容,希望文章能够帮你解决Swift (关键字详解)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)