Swift3.0基础语法学习<四>

协议和扩展:

//
//  ViewController4.swift
//  SwiftBasicDemo
//
//  Created by 思 彭 on 16/11/16.
//  Copyright ? 2016年 思 彭. All rights reserved.

// 协议和扩展

import UIKit

// 定义协议
protocol ExampleProtocol {

    var simpleDescription: String {
        get
    }
    // 使用 mutating 关键字修饰方法是为了能在该方法中修改 struct 或是 enum 的变量,在设计接口的时候,也要考虑到使用者程序的扩展性。所以要多考虑使用mutating来修饰方法。
    mutating func adjust()
}

class ViewController4: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.title = "协议和扩展"

        // 1.Classes, enumerations, and structs都能接受协议
        var a = SimpleClass()
        a.adjust()
        let aDescription = a.simpleDescription
        print("aDescription = \(aDescription)")
        var b = SimpleStructure()
        b.adjust()
        let bDescription = b.simpleDescription
        print("bDescription = \(bDescription)")

        // 输出结果:
        /* aDescription = A very simple class.  Now 100% adjusted.
           bDescriptionA = simple structure (adjusted)
        */

        // 2. extension扩展的使用
        print(7.simpleDescription)}   // The number 7

    }

    // 创建类,遵守协议
    class SimpleClass: ExampleProtocol {
        var simpleDescription: String = "A very simple class."
        var anotherProperty: Int = 69105
        func adjust() {
            simpleDescription += "  Now 100% adjusted."
        }
    }

    struct SimpleStructure: ExampleProtocol {
        var simpleDescription: String = "A simple structure"
        mutating func adjust() {
            simpleDescription += " (adjusted)"
        }
    }

    // Int的扩展
    extension Int: ExampleProtocol {
        var simpleDescription: String {
            return "The number \(self)"
        }
        mutating func adjust() {
            self += 42
        }
}
时间: 2024-12-26 04:22:26

Swift3.0基础语法学习<四>的相关文章

Swift3.0基础语法学习&lt;五&gt;

异常处理: 1 // 2 // ViewController5.swift 3 // SwiftBasicDemo 4 // 5 // Created by 思 彭 on 16/11/16. 6 // Copyright ? 2016年 思 彭. All rights reserved. 7 8 // 错误处理 9 10 import UIKit 11 12 class ViewController5: UIViewController { 13 14 override func viewDid

Swift基础语法学习总结(转)

Swift基础语法学习总结 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的. 1.3) swift在语句后面加分号与否都是正确的,但是swift偏好的风格是不在结尾处加分号的.如果有多个语句,必须用分号隔开. 1.4) 在一个数字中庸下划线(_)会被忽视,方便认出大数值的的数字,也可以在前面补零. 1.5) swift不允许在不同种类型间做加减乘

【JavaScript】02.基础语法学习

[JavaScript]02.基础语法学习 引言: 老农认为(老农是我对自己的昵称),学习任何一门计算机程序语言都要先从它的语法知识开始.计算机程序语言由一堆预定义的字符和书写这些字符的规则组成.这些预定义的字符在语言里面叫做关键字或者保留字,书写这些字符的规则叫做语法. 计算机语言(Computer Lnguage),是指用于人与计算机之间通讯的语言.语言分为自然语言与人工语言两大类.自然语言是人类在自身发展的过程中形成的语言,是人与人之间传递信息的媒介.人工语言指的是人们为了某种目的而自行设

ECMAScript 5.0 基础语法(上)

银子: 一般来说,一门编程语言的基础语法都是大同小异的.比如,python的基础语法,包括:数据类型,变量,作用域,运算符,流程控制(if...else...语句),循环,编码,数据类型的操作(增删改查.切片),常用的内置函数,常用的内置模块,以及规范化的开发结构.JavaScript也是类似的.ECMAScript就是JavaScript最基础的语法. 一.JS是啥? 一个网页开发,主要用的语言组合是html+css+JS,其中,htnl用来搭建页面的结构(控件,段落,标签,链接什么的),cs

0基础怎么学习Python?Python学习方法汇总!

Python是一门面向对象的编程语言,该语言语法简单清晰.具有丰富和强大的库,简单易读.容易维护,受到了大家的喜欢和追捧,同时用途也非常广泛,无论是0基础还是初学者,学Python都是非常不错的选择.那么Python0基础该如何学习?为大家简单的介绍一下. 1.首先零基础学习编程,就是选择一个适合自己的版本.对于0基础学习Python是非常不错的选择,虽然有很多比较知名的开发语言,但是相对于来说Python是最适合入门学习的.目前学习的话可以从Python3开始了,因为Python2将慢慢退出历

没有基础可以学习大数据吗?0基础怎么学习大数据?给初学者支几招

小白如何学习大数据技术?大数据怎么入门?怎么做大数据分析?数据科学需要学习那些技术?大数据的应用前景等等问题,已成为热门大数据领域热门问题,以下是对新手如何学习大数据技术问题的解答~ 大数据开发学习可以按照以下内容进行学习 第一阶段:JavaSE+MySql+Linux 学习内容:Java 语言入门 → OOP 编程 → Java 常用Api.集合 → IO/NIO → Java 实 用技术 → Mysql 数据库 → 阶段项目实战 → Linux 基础 → shell 编程 学习目标:学习ja

0基础怎么学习大数据?给零基础学习者支几招

小白如何学习大数据技术?大数据怎么入门?怎么做大数据分析?数据科学需要学习那些技术?大数据的应用前景等等问题,已成为热门大数据领域热门问题,以下是对新手如何学习大数据技术问题的解答~ 大数据开发学习可以按照以下内容进行学习 第一阶段:JavaSE+MySql+Linux 学习内容:Java 语言入门 → OOP 编程 → Java 常用Api.集合 → IO/NIO → Java 实 用技术 → Mysql 数据库 → 阶段项目实战 → Linux 基础 → shell 编程 学习目标:学习ja

Swift基础语法学习总结(一)

1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的. 1.3) swift在语句后面加分号与否都是正确的,但是swift偏好的风格是不在结尾处加分号的.如果有多个语句,必须用分号隔开. 1.4) 在一个数字中庸下划线(_)会被忽视,方便认出大数值的的数字,也可以在前面补零. 1.5) swift不允许在不同种类型间做加减乘除,要先做类型转换或运算符重载

Swift基础语法学习总结一

1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的. 1.3) swift在语句后面加分号与否都是正确的,但是swift偏好的风格是不在结尾处加分号的.如果有多个语句,必须用分号隔开. 1.4) 在一个数字中庸下划线(_)会被忽视,方便认出大数值的的数字,也可以在前面补零. 1.5) swift不允许在不同种类型间做加减乘除,要先做类型转换或运算符重载