学习Swift--方法

方法

方法是与某些特定类型相关联的函数。类、结构体、枚举都可以定义实例方法;实例方法为给定类型的实例封装了具体的任务与功能。类、结构体、枚举也可以定义类型方法;类型方法与类型本身相关联。类型方法与 Objective-C 中的类方法(class methods)相似。

实例方法

class Counter {
    var count = 0

    // 实现两个简单的方法
    func increment() {
        count += 1
    }

    func incrementBy(amount: Int) {
        count += amount
    }
}

let counter = Counter()
counter.increment()
print(counter.count)
// 打印出:1
counter.incrementBy(5)
print(counter.count)
// 打印出:5

self属性

平时不需要多使用self属性,但是在某些方法的参数名与某个属性名相同,就需要用到self属性,主要作用就是用来区分属性名

struct Point {
    var x = 0.0, y = 0.0
    func isToTheRightOfX(x: Double) -> Bool {
        // 当传进的参数(x)和已经声明的属性相吻合的时候 需要用到self属性进行区分
        return self.x > x
    }
}

let point = Point(x: 5.0, y: 3.0)
if point.isToTheRightOfX(1.0) {
    print("The point is to the right of the line where x == 1.0")
}

实例方法修改值类型

结构体和枚举都是值类型,那么使用实例方法对值类型的属性进行修改需要特殊处理,否则无法修改

struct Point {
    var x = 0.0, y = 0.0

    // 如果要修改值类型属性 需要加 "mutating"关键字
    mutating func moveByX(deltaX: Double, deltaY:Double){
        self.x += deltaX
        self.y += deltaY

//        self = Point(x: x + deltaX, y: y + deltaY)  这样写等效
    }
}

var point = Point(x: 5.0, y: 3.0)
point.moveByX(8.0, deltaY: 2.0)
print(point)
enum StateSwitch {
    case Off, Low, High
    mutating func next() {
        switch self {
        case .Off:
            self = .Low
        case .Low:
            self = .High
        case .High:
            self = .Off
        }
    }
}

var ovenLight = StateSwitch.Off
ovenLight.next()
// 现在是Low状态
ovenLight.next()
// 现在是High状态

类型方法

实例方法是被类型的某个实例调用的方法。你也可以定义类型本身调用的方法,这种方法就叫做类型方法。声明结构体和枚举的类型方法,在方法的func关键字之前加上关键字static。类可能会用关键字class来允许子类重写父类的实现方法。

class SomeClass {
    class func someFunc() -> SomeClass {
        return SomeClass()
    }
}

// 类型方法可以直接使用类型调用,无需创建实例
let someClass = SomeClass.someFunc()

struct SomeStruct {
    static func someFunc() {

    }
}
SomeStruct.someFunc()
时间: 2024-10-10 15:14:31

学习Swift--方法的相关文章

学习swift语言的快速入门教程推荐

随着苹果产品越来越火爆,苹果新推出的swift必定将在很大程度上代替oc语言.学好swift语言,对于IOS工程师来讲,已经是一门必备技能. 有一些比较好的英文版教程,值得学习. 1. Swift Tutorial for Beginners 在这个教程里,你可以学习一些iOS代码编写的新方法. 2. The Swift Programming Language 英文 中文 这是苹果官方出的iOS应用编程语言Swift的说明文档,中文版本很快就已经推出了.应该说还么有那个语音的中文文档翻译速度和

Swift 方法的多面性 (转)

下面引自 objc.io 第16期 http://objccn.io/issue-16-3/ Swift 方法的多面性 虽然 Objective-C 的语法相对于其他编程语言来说写法有点奇怪,但是当你真正使用的时候它的语法还是相当的简单.下面有一些例子: + (void)mySimpleMethod { // 类方法 // 无参数 // 无返回值 } - (NSString *)myMethodNameWithParameter1:(NSString *)param1 parameter2:(N

如何学习Swift可空链式调用

今天我们一起来学习Swift可空链式调用.可空链式调用是一种可以请求和调用属性.方法以及下标的过程,它的可空体现在请求或调用的目标当前可能为nil.如果可空的目标有值,即调用就会成功:如果选择的目标为nil,即调用将返回nil.多个连续的调用可以被链接在一起形成一个调用链,如果其中任何一个节点为nil将导致整个链调用失败.    一.使用可空链式调用来强制展开    可空链的定义,即是在要调用非空的属性.方法.下标的可空值后面添加一个问号即可.特别的,可空链式调用的返回结果与原本的返回结果具有相

Swift学习——Swift基础详解(一)

注:由于基础部分在Swift Tour 中已经大体的说明了,所以在详解中不会达到100%的原文释义 Constants and Variables  常量和变量 常量和变量都需要声明名称和类型(作为程序员,这些基础也就不说了),常量一次赋值不能改变,变量的值可以改变 Declaring Constants and Variables   声明常量和变量 常量和变量在使用之前必须要声明,使用let关键字定义常量,var关键字定义变量 下面的例子可以用来定义用户登录的时候最大的尝试次数: let m

Swift学习——Swift基础详解(六)

Optionals    选配 选配(好像不是这么翻译的)适用于那些值可能为空的情况,一个选配有两种情况:存在值并且等于x,或者值不存在. 选配的概念在OC和C里面并没有,在OC中最接近的概念就是:OC中的返回值为对象的函数,当对象不存在的时候,可以返回nil,但是nil只能代表对象,不可以代表基础类型或者结构体和枚举类型.OC中使用NSNotFound表示值不存在.在Swift中,不需要使用其他的类型表示不存在的值. 举个例子: 在Swift中,String类型有一个方法叫做toInt,但是并

Swift--在 30 天内,从零开始学习 Swift

本文是翻译,版权归原作者所有 原文地址(original source):https://blog.growth.supply/from-zero-to-swift-in-30-days-8ad97b630e00 作者(author):https://twitter.com/katiesmillie 确切地说,我是在 30 天前开始学习 Swift 语言的.三天前,我的第一个对外公测版的应用被 Apple 审核通过了.这个对外公测的版本和最终产品比较起来,算不上什么,但是对我而言,这是一次极大的

Swift从零开始学习_07(UI界面实践中学习Swift)

昨天试了下写代码后感觉写比只是看好很多, 所以今天就又写了一点东西, 主要是类的属性.以及继承和xib等一些知识, 也遇到了很多麻烦, 不过好在都已经解决了, 这里简单写一下今天的代码, 有什么不对的地方了, 还是希望提出来. 先看一下做的第一个简单的页面:点击第二个按钮, 下面的视图变化颜色, 点击第一个按钮, 模态一个页面 首先是我们之前写OC代码时候在.h里面声明的一些属性, 在Swift怎么声明呢?,方法如下: var array:NSMutableArray = NSMutableAr

ios -- 教你如何轻松学习Swift语法(二)

前言:swift语法基础篇(二)来了,想学习swift的朋友可以拿去参考哦,有兴趣可以相互探讨,共同学习哦. 一.可选类型(重点内容) 1.什么是可选类型? 1.1在OC开发中,如果一个变量暂停不使用,可以赋值为0(基本属性类型)或者赋值为空(对象类型) 1.2在swift开发中,nil也是一个特殊的类型.因为和真实的类型不匹配是不能赋值的(swift是强类型语言) 1.3但是开发中赋值nil,在所难免.因此推出了可选类型 目的:让代码更加严谨 2.可选类型的取值 可选类型要么是:空值 , 要么

专家修炼-学习的方法

学习要尽早开始.终身进行,同时学习也是要讲究方法的.不讲究学习方法的人即使尽早开始也是事倍功半乃至蹉跎终身. i.人脑的学习原理 现代神经科学和认知科学认为,几乎没有任何技能是人一出生就会的.哪怕是对简单物体的识别,把东西抓取过来这些简单的动作,也是婴儿后天学习的结果.人脑的巧妙之处在于提供了一个能够学习各种技能的能力.与计算机不同,人对于技能的掌握是在大脑硬件层次实现的.人的任何一个技能,都是大脑内一系列神经纤维传递的电脉冲信号的组合.解剖表明拥有不同技能的人,其大脑的神经结构非常不同,比如出

RhinoMock学习-Stub方法

// Arrange var stub = MockRepository.GenerateStub<IDemo>(); stub.Stub(x => x.StringArgString(Arg<string>.Is.Equal("input"))).Return("output"); // Act var firstCallResult = stub.StringArgString("input"); var sec