• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >swift > Swift教程之方法详解

Swift教程之方法详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了swift教程,ios swift教程,swift教程pdf,swift语言教程,swift视频教程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

方法是关联到一个特定类型的函数。类、结构、枚举所有可以定义实例方法,封装特定任务和功能处理给定类型的一个实例。类、结构、枚举类型还可以定义方法,相关的类型本身。类型方法类似于objective – c类方法。

结构和枚举可以定义方法swift与C和objective – C是一个重大的区别。在objective – c中,类是唯一类型可以定义方法。在swift,你可以选择是否要定义一个类,结构,或枚举,还有你定义方法类型的灵活性创造。

1、实例方法

实例方法是属于一个特定的类,结构或枚举实例的功能。他们支持这些实例的功能,无论是通过提供方法来访问和修改实例属性,或提供的功能与实例的目的。实例方法具有完全相同的语法功能,如功能描述
你所属的类型的打开和关闭括号内写一个实例方法。一个实例方法具有隐式访问所有其他实例方法和该类型的属性。一个实例方法只能在它所属的类的特定实例调用,它不能访问一个不存在的实例。
这里,定义了一个简单的计数器类,它可以用来计数一个动作发生的次数的示例:

class Counter {
var count = 0
func increment() {
count++
}
func incrementBy(amount: Int) {
count += amount
}
func reset() {
count = 0
}
}
</div>

counter类可以定义三个实例方法:
增量递增计数器1。
incrementBy(amount:Int)由指定的整数金额递增计数器。
重置将计数器的值重置为零。
计数类也声明了一个变量属性,统计,跟踪当前的计数器值。
你调用实例方法具有相同点语法的属性

let counter = Counter()
// the initial counter value is 0
counter.increment()
// the counter's value is now 1
counter.incrementBy(5)
// the counter's value is now 6
counter.reset()
// the counter's value is now 0
</div>

本地和外部参数名称的方法

函数参数可以有一个本地名称(在函数体内使用)和外部名称(在调用函数时使用),所述外部参数名称。方法参数也是如此,因为方法与类型相关的函数。然而,本地名称和外部名称的默认行为是不同的函数和方法。

方法在Swift非常类似于objective – c的同行。在objective – c中,一个方法的名称在Swift通常是指使用preposition等方法的第一个参数,,或者,就像在incrementBy方法从前面的counter类的例子。使用可以被解读为一个判断的方法叫做preposition。Swift使这个方法建立命名约定易于编写通过使用一个不同的默认方法。

具体来说,Swift给第一个参数名称方法默认本地参数名称,并给出第二和后续的参数名称默认本地和外部参数名称。这个约定可以在熟悉的objective – c中调用到,并使得表达方法调用而不需要符合你的参数名称。

考虑这个替代版本的counter类,它定义了一个更复杂的形式的incrementBy方法:

class Counter {
var count: Int = 0
func incrementBy(amount: Int, numberOfTimes: Int) {
count += amount * numberOfTimes
}
}
</div>

这有两个parameters-amount和numberOfTimes incrementBy方法。默认情况下,Swift将amount视为本地名称,但将numberOfTimes视为本地和外部名称。您调用的方法如下:

let counter = Counter()
counter.incrementBy(5, numberOfTimes: 3)
// counter value is now 15
</div>
你不需要定义一个外部参数名称为第一个参数值,因为它是明确的函数名incrementBy。然而,第二个参数是由外部参数名称进行限定。
这种默认行为有效的外部方法,如果你有numberOfTimes参数之前写了一个hash符号(#):

func incrementBy(amount: Int, #numberOfTimes: Int) {
count += amount * numberOfTimes
}
</div>
上面描述的默认行为在Swift写入相同的方法定义,语法类似于objective – c,可以更方便地被调用。

  修改外部参数名称的行为方法

有时是有用的提供一个外部方法的第一个参数的参数名称,即使这不是默认行为。你自己可以添加一个显式的外部名称,或者你可以用一个散列前缀的名字的第一个参数标志使用本地名称作为外部的名字。
相反,如果你不想为第二个提供外部名称或后续参数的方法,覆盖默认行为通过使用下划线字符(_)作为一个明确的外部参数名称参数。

  Self属性

一个类型的每个实例都有所谓的一个隐含self属性,它是完全等同于该实例本身。您可以使用这个隐含的self属性来引用当前实例中它自己的实例方法。

在上面的例子中,增量方法也可以写成这样:

func increment() {
self.count++
}
</div>
在实践中,你不需要写self,这在你的代码会非常频繁。如果你没有明确写self,Swift假设你是指当前实例的属性或方法,每当你使用一个方法中一个已知的属性或方法名。这个假设是证明了里边三个实例方法的计数器使用count(rather than self.count)的。
主要的例外发生在一个实例方法的参数名称相同的名称作为该实例的属性。在这种情况下,参数名称的优先,有必要参考属性更多合格的方式。您可以使用隐式的自我属性的参数名和属性名来区分。
如果一个方法参数叫x,还有一个实例属性也叫x,在Swift中可以自动对两个x消除歧义,不会混淆。

struct Point {
var x = 0.0, y = 0.0
func isToTheRightOfX(x: Double) -> Bool {
return self.x > x
}
}
let somePoint = Point(x: 4.0, y: 5.0)
if somePoint.isToTheRightOfX(1.0) {
println("This point is to the right of the line where x == 1.0")
}
// prints "This point is to the right of the line where x == 1.0"
</div>
如果没有self前缀,Swift将假定x的两种用法称为X的方法参数

修改值类型的实例方法

结构和枚举值类型。默认情况下,一个值类型的属性不能修改它的实例方法
然而,如果您需要修改的属性结构或枚举在一个特定的方法,你可以选择该方法的变化行为。但任何更改都会使它得编写的方法结束时回到原来的结构。当该方法结束时还可以分配一个完全新的实例对其隐含的self属性,而这个新的实例将取代现有的。
你可以选择这个行为之前将变异的关键字嵌入函数关键字的方法:

struct Point {
var x = 0.0, y = 0.0
mutating func moveByX(deltaX: Double, y deltaY: Double) {
x += deltaX
y += deltaY
}
}
var somePoint = Point(x: 1.0, y: 1.0)
somePoint.moveByX(2.0, y: 3.0)
println("The point is now at (\(somePoint.x), \(somePoint.y))")
// prints "The point is now at (3.0, 4.0)"
</div>
Point结构上面定义了一个变异moveByX方法,它通过一定量移动一个Point实例。而不是返回一个新的起点,这种方法实际上会修改在其上调用点。该变异包含被添加到它的定义,使其能够修改其属性。
请注意,您不能调用变异方法结构类型的常数,因为它的属性不能改变,即使它们是可变的特性,如

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Swift 教程
  • iOS开发中Swift 指纹验证功能模块实例代码
  • swift在IOS应用图标上添加提醒个数的方法
  • Swift自定义iOS中的TabBarController并为其添加动画
  • Swift操作Quartz 2D进行简单的绘图与坐标变换的教程
  • 使用Swift实现iOS App中解析XML格式数据的教程
  • 用Swift构建一个简单的iOS邮件应用的方法
  • Swift教程之类的析构详解
  • Swift教程之继承详解
  • Swift教程之下标详解

相关文章

  • 2017-05-28简单了解Swift语言中的break和continue语句的用法
  • 2017-05-28Swift中的Access Control权限控制介绍
  • 2017-05-28Swift 3.0基础学习之枚举类型
  • 2017-05-28ssm框架上传图片保存到本地和数据库示例
  • 2017-05-22Swift 教程
  • 2017-05-28Swift算法之二叉树实现的方法示例
  • 2017-05-28Swift UILable 设置内边距实例代码
  • 2017-05-28关于swift的个人小结
  • 2017-05-28Swift面试题及答案整理
  • 2017-05-28Swift实现文件压缩和解压示例代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • mac git xcrun error active developer path 错误
    • 微信开发--自定义菜单查询返码乱码的解决方法
    • Swift学习笔记之元组(tuples)
    • MyBatis框架简介
    • Swift 函数
    • List调用toString()方法后,去除两头的中括号实例
    • Swift 字符(Character)
    • 举例讲解Swift编程中switch...case语句的用法
    • Swift中的常量和变量简单概述
    • 实例讲解Swift中引用类型的ARC自动引用计数

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有