swift学习笔记之--方法
一、说明
跟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=jack,age=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学习笔记之--方法的更多相关文章
- Swift学习笔记(14)--方法
1.分类 方法分为实例方法和类型方法 实例方法(Instance Methods):与java中的类似,略 类型方法(Type Methods):与java.oc中的类方法类似.声明类的类型方法,在方 ...
- swift学习笔记之-方法部分
//方法部分 import UIKit //方法(Methods) /*方法是与某些特定类型相关联的函数,类.结构体.枚举都可以定义实例方法 实例方法(Instance Methods): 1.属于某 ...
- 【swift学习笔记】二.页面转跳数据回传
上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...
- Swift学习笔记(一)搭配环境以及代码运行成功
原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...
- Java学习笔记之---方法和数组
Java学习笔记之---方法与数组 (一)方法 (1)什么是方法? 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 (2)方法的优点 使程序变得更简短而 ...
- swift学习笔记5——其它部分(自动引用计数、错误处理、泛型...)
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- swift学习笔记4——扩展、协议
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- swift学习笔记3——类、结构体、枚举
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- swift学习笔记1——基础部分
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
随机推荐
- qt中 中文乱码问题
qt是跨平台的开发平台.他的编译器是要手动配置的,在window下一般我们用virtual stuido中cl,或者Mingw中的g++ 在linux中一般采用Linux下的g++ 而 微软VS的中 ...
- ng-bind和{{}}插值法
引言 今天调bug的时候遇到了一个问题,就是有的时候加载出来的数据没有数据的时候出现的是{{TeacherName}},一看这个不是我在页面上绑的值吗?怎么这样就显示出来了呢…… 针对这个问题,想起来 ...
- 命令运行带参数的jar
一.打包(此处用的是eclipse) 代码如下,此如引用了某博主的代码,因忘记地址,如博主发现此文,可私信我 package com.example.Open; import java.io.File ...
- 字符设备驱动笔记——poll机制分析(七)
poll机制分析 所有的系统调用,基于都可以在它的名字前加上“sys_”前缀,这就是它在内核中对应的函数.比如系统调用open.read.write.poll,与之对应的内核函数为:sys_open. ...
- 【转】10张图带你深入理解Docker容器和镜像
[转自]:http://dockone.io/article/783 待续
- mysql从文件中导入数据
linux: load data infile '/tmp/dnslog.txt' into table dnslog_cnnic_cn fields terminated by ' ' lines ...
- c语言实现类似重载的功能
今天man了一下open,发现open函数的原型居然看着是重载,C语言不是不支持重载么,经过一番搜寻之后,总结如下: 可变长参数函数 C语言是不支持函数重载机制的,但是支持变长参数函数,当然C++也是 ...
- JavaScript高级 面向对象(7)--深拷贝与浅拷贝
说明(2017.3.31): 1. 画图: var car = {name:"法拉利"}; var p = {name: "张三", age: "19 ...
- Lo4j(一)初识
最近开始在研究log4j,可能因为是想要自己去搭建框架那. 废话不多说,先上一个例子好了. 第一步:当然是引入对象的jar包了 地址:http://www.apache.org/dyn/closer. ...
- sql数据类型总结
一.数字数据类型 bigint int smallint tinyint decimal numeric money smallmoney float real Bit 二.字符数据类型 非unico ...