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学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
随机推荐
- LeetCode: Evaluate Reverse Polish Notation 解题报告
Evaluate Reverse Polish Notation Evaluate the value of an arithmetic expression in Reverse Polish No ...
- 实战入侵(突破FCK+安全狗上传)
PS:有点尴尬,二次上传突破FCK,免杀马儿过狗. 刚开始和超霸一起弄,TMDGB.弄到四点多,早上尼玛七点多的又去考试,虽然考试还是睡着了,但是TMDGB感觉日子好充实啊! FCK上传地址如下所示: ...
- 【WPF】TabControl垂直分页栏/选项卡
分页栏控件TabControl默认的选项卡是水平方向的,如下: 现在要改成垂直方向的: 给TabControl 标签添加属性 TabStripPlacement=”Left” , 如下: <Ta ...
- 设计和开发ETL系统(一)——ETL过程综述
在这部分将按照设计和实现ETL系统的流程展开,将上一个部分的那些子系统按照提取数据.清洗和一致化.向呈现服务器提交以及管理ETL环境等四个方面进行了分类.(是不是说对ETL主要就是掌握这四个方面的内容 ...
- Linux下Kill函数用法
http://www.cnblogs.com/winnxm/archive/2010/01/22/1654502.html 用于向任何进程组或进程发送信号. #include <sys/type ...
- TP5 display()
tp3.x $this->display(); tp5 return $this->fetch();
- PHP框架之ThinkPHP项目CMS内容管理系统源码及开发手册视频
http://download.csdn.net/download/duguqing/4203042
- EasyUI项目中的自定义JS
自定义方法: (function($) { $.extend($, { //获取下标,删除时使用 getArrayIndex : function (array,value) { var index ...
- 一遍记住Java常用的八种排序算法与代码实现
1.直接插入排序 经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中. 将第一个数和第二个数排序,然后构成一个有序序列 将第三个数插入进去,构成一个新的有序序列. 对第四个数.第五个数……直 ...
- C++中成员变量默认private
struct 默认是 publicclass 默认是 private