• swfit-扩展语法


    import UIKit
    
    
    extension Double {
        
        var km: Double { return self * 1_000.0}
        var m : Double { return self}
        var cm: Double { return self / 100.0}
        var mm: Double { return self / 1_000.0}
        var ft: Double { return self / 3.28084}
    }
    
    extension Int {
        mutating func square() {
            self = self * self
        }
    }
    
    extension Int {
        subscript(digitIndex: Int) -> Int {
            var decimalBase = 1
            for _ in 0..<digitIndex {
                decimalBase *= 10
            }
            return (self / decimalBase) % 10
        }
    }
    
    extension Int {
        enum Kind {
            case Negative, Zero, Positive
        }
        var kind: Kind {
            switch self {
            case 0:
                return .Zero
            case let x where x > 0:
                return .Positive
            default:
                return .Negative
            } }
    }
    
    
    
    class First_Demo4: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            self.navigationItem.title = "扩展语法"
            self.view.backgroundColor = UIColor.white
            
            
            let oneInch = 25.4.mm
            print("one inch is (oneInch) meters")
            // 打印 “One inch is 0.0254 meters”
            let threeFeet = 3.ft
            print("Three feet is (threeFeet) meters")
            // 打印 “Three feet is 0.914399970739201 meters”
            let aMarathon = 42.km + 195.m
            print("A marathon is (aMarathon) meters long")
            // 打印 “A marathon is 42195.0 meters long”
            
            
            /*
             通过扩展添加的实例方法也可以修改该实例本身。结构体和枚举类型中修改 self 或其属性的方法必须将该实例,
             方法标注为 mutating ,正如来自原始实现的可变方法一样。
             */
            var someInt = 3
            someInt.square()
            print(someInt)
            // someInt 的值现在是 9
           
            print(746381295[0]) // 返回 5
            print(746381295[1]) // 返回 9
            print("-------------我是分割线----------------")
            
            //判断正负
            /*
             函数 printIntegerKinds(_:) 接受一个 Int 数组,然后对该数组进行迭代。
             在每次迭代过程中,对当前整数 的计算型属性 kind 的值进行评估,并打印出适当的描述。
             */
            printIntegerKinds([3, 19, -27, 0, -6, 0, 7])
            
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
        
        func printIntegerKinds(_ numbers: [Int]) {
            for number in numbers {
                switch number.kind {
                case .Negative:
                    print("- ", terminator: "")
                case .Zero:
                    print("0 ", terminator: "")
                case .Positive:
                    print("+ ", terminator: "")
                }
            }
            print("")
        }
    
    }
  • 相关阅读:
    为Qtcreator 编译的程序添加管理员权限
    热备,冷备,云备
    最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前的准备
    进入2012 -- 回顾我走过的编程之路
    为什么中国程序员水平一直上不了层次?无非是这些原因!
    我是如何失去团队掌控的?
    后端开发甩锅奥义
    一个线程oom,进程里其他线程还能运行吗?
    架构师必备,带你弄清混乱的JAVA日志体系!
    IDEA一定要改的八条配置
  • 原文地址:https://www.cnblogs.com/sayimba/p/6245499.html
Copyright © 2020-2023  润新知