一、说明

跟oc一样,面向对象,swift重点额方法可以分为2大类:

(1)实例方法

oc中为减号方法(对象方法)

(2)类型方法

oc中的加号方法(类方法)

二、实例方法

只能是对象调用的方法

代码示例:

 class Dog {
func run() {
println("Dog--->run")
}
}
var d = Dog()
d.run(

说明:

第2行定义了一个run方法

第7行调用run方法:调用方法也跟调用函数很像,格式是“对象名.方法名(参数)”

三、方法的参数

方法和函数的参数有点区别,默认情况下

方法的第1个参数名仅仅是局部参数名

方法的其他参数名(除第1个参数名以外)既是局部参数名,又是外部参数名

 class Calculator {
func sum(num1: Int, num2: Int) -> Int {
return num1 + num2
}
}
var c = Calculator()
c.sum(, num2: )

说明:

num1仅仅是局部参数名,num2既是局部参数名,又是外部参数名

相当于func sum(num1: Int, #num2: Int) -> Int

(2)可以在参数名前面加个下划线 _,去掉默认的外部参数名

 class Calculator {
func sum(num1: Int, _ num2: Int) -> Int {
return num1 + num2
}
}
var c = Calculator()
c.sum(, )

说明:num1、num2都仅仅是局部参数名,不是外部参数名

(3)也可以给第1个参数增加外部参数名

 class Calculator {
func sum(#num1: Int, num2: Int) -> Int {
return num1 + num2
}
}
var c = Calculator()
c.sum(num1: , num2: )

说明:num1、num2既是局部参数名,又是外部参数名

四、类型方法

1.什么是类型方法?

  被关键字class修饰的方法,也可以称为“类方法”

 class Calculator {
class func sum(num1: Int, num2: Int) -> Int {
return num1 + num2
}
}
Calculator.sum(, num2: )

说明:

第2行定义了一个类型方法

类型方法的特点:直接用类调用类型方法,不能用对象调用类型方法

第6行调用类型方法,格式是“类名.方法名(参数)”

注意:类型方法和实例方法的方法名可以一样

 class Calculator {
class func sum(num1: Int, num2: Int) -> Int {
return num1 + num2
}
func sum(num1: Int, num2: Int) -> Int {
return num1 + num2
}
}
Calculator.sum(, num2: )
var c = Calculator()
c.sum(, num2: )

说明:

第2行定义的类型方法和第5行定义的实例方法:方法名一样

第9行使用类调用类型方法

第11行使用对象调用实例方法

2.代码示例

 class Person {
class func run() {
println("class func run")
}
func run() {
println("func run")
}
class func test() {
self.run();
}
func test() {
self.run();
}
}
var p = Person()
p.test()
Person.test()

函数的定义格式:

func 函数名(形参列表) -> 返回值类型  {
// 函数体... }

注:形参列表和返回值类型可以是多个

三、默认参数值

func addStudent(name: String, age: Int = ) {
println("添加1个学生:name=\(name),age=\(age)")
}

addStudent("jack")

age参数有个默认值20,所以第4行调用函数时可以不传值给age参数

输出结果是:

添加1个学生:name=jackage=20

(2)带有默认参数值的形参,Swift会自动给它生成一个跟形参名相同的外部参数名

age: Int = 20相当于#age: Int = 20

因此,如果要传入age参数值时,只能这么调用

addStudent("jack", age: 25)

(3)在带有默认参数值的参数名前加个下划线 _ ,调用函数时就不用写外部参数名

func addStudent(name: String, _ age: Int = ) {
println("添加1个学生:name=\(name),age=\(age)")
} addStudent("jack", )

(4)外部参数名的定义格式如下

func 函数名(外部参数名 形式参数名: 形式参数类型) -> 返回值类型  {
// 函数体...
}

外部参数名写在形式参数名的前面,与形式参数名之间用空格隔开,一旦定义了外部参数名,在调用函数时就必须加上外部参数名

//定义了外部参数
func sum(number1 num1: Int, number2 num2: Int) -> Int
{
return num1 + num2
}
sum(number1: , number2: ) // 调用函数 func addStudent(name:String,age:Int = ) {
print("添加1个学生:name = \(name),age = \(age)")
}//在定义函数的时候,给形参指定一个默认值,调用函数时,就可以不用给这个形参传值 addStudent("jack") func addStudent(name:String,_age:Int = ) {
print("添加1个学生:name = \(name),age = \(age)")
}//带有默认参数值的参数名前价格下划线-,调用函数时就不用谢外部参数名了 addStudent("hhggll", age: )

转自:文顶顶的博客 http://www.cnblogs.com/wendingding/p/3887060.html,感谢顶顶大神!

swift学习笔记之--方法的更多相关文章

  1. Swift学习笔记(14)--方法

    1.分类 方法分为实例方法和类型方法 实例方法(Instance Methods):与java中的类似,略 类型方法(Type Methods):与java.oc中的类方法类似.声明类的类型方法,在方 ...

  2. swift学习笔记之-方法部分

    //方法部分 import UIKit //方法(Methods) /*方法是与某些特定类型相关联的函数,类.结构体.枚举都可以定义实例方法 实例方法(Instance Methods): 1.属于某 ...

  3. 【swift学习笔记】二.页面转跳数据回传

    上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...

  4. Swift学习笔记(一)搭配环境以及代码运行成功

    原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...

  5. Java学习笔记之---方法和数组

    Java学习笔记之---方法与数组 (一)方法 (1)什么是方法? 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 (2)方法的优点 使程序变得更简短而 ...

  6. swift学习笔记5——其它部分(自动引用计数、错误处理、泛型...)

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  7. swift学习笔记4——扩展、协议

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  8. swift学习笔记3——类、结构体、枚举

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  9. swift学习笔记1——基础部分

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

随机推荐

  1. js switch的使用 ng-switch的使用方法

    语法 switch(n) { case 1: 执行代码块 1 break; case 2: 执行代码块 2 break; default: n 与 case 1 和 case 2 不同时执行的代码 } ...

  2. C陷阱与缺陷的学习笔记

    1用单引号括起的字符实际代表一个整数,整数值对应于该字符在编译器中采用的字符集对应的序列值:双引号括起的字符串,代表的是一个指向无名数组起始字符的指针,该数组被双引号之间的字符和‘\0’初始化.对于' ...

  3. 【Unity笔记】碰撞器(Collision)与触发器(Trigger)的区别

    当碰撞器Collision组件身上的属性IsTrigger勾选为True时,该碰撞器就成了触发器. 区别:1.能够产生的回调和函数不同.碰撞器:MonoBehaviour.OnCollisionEnt ...

  4. s:debug标签的错误ConcurrentModificationException

    搭建SSH的时候页面上加入<s:debug>标签后台出现 严重: Servlet.service() for servlet jsp threw exception java.util.C ...

  5. jquery-easyui 中表格的行编辑功能

    具体实现代码如下: <table id="tt"></table> $('#tt').datagrid({ title:'Editable DataGrid ...

  6. Nginx之虚拟目录-root与alias的区别

    最近在nginx上部署日志分析工具awstats时,在配置awstats分析结果可供网页浏览这步时,分析结果页面访问总是404.后来查阅了一些资料,发现是root和alias的用法区别没搞懂导致的,这 ...

  7. fanqiang_bak

  8. Asynchronous Methods for Deep Reinforcement Learning(A3C)

    Mnih, Volodymyr, et al. "Asynchronous methods for deep reinforcement learning." Internatio ...

  9. ffmpeg avformat_open_input返回失败的解决办法

    用ffmpeg做的第一个程序,参考网上的代码,就出现了一些问题,其中avformat_open_input返回失败. 下面是我在网上收集到的失败信息的相关解决: /////////////////// ...

  10. (转)sqlite3使用中的常见问题

    1. 创建数据如果不往数据库里面添加任何的表,这个数据库等于没有建立,不会在硬盘上产生任何文件,如果数据库已经存在,则会打开这个数据库. 2. 如何通过sqlite3.dll与sqlite3.def生 ...