Swift面向对象基础(中)——Swift中的方法

时间:2023-01-07 10:40:01

学习来自《极客学院》

1、定义方法需要在类型(枚举,结构体,类)里定义,不能独立定义,独立定义的是函数

2、方法要么属于该类型本身,要么是该类型的一个实例

3、不能独立执行方法,执行方法必须使用类型或实例作为调用者

注意:枚举、结构体中方法使用static修饰,类中用class修饰,都属于类型方法,否则的话属于实例方法

 import Foundation

 class SomeClass{
func test(){
println("====test 方法 ======")
}
class func bar(#msg:String){
println("====bar 方法 ======,传入的参数为:\(msg)")
}
}
//创建实例
var sc = SomeClass()
//将sc的test方法分离成函数,前面类型用()->()表示函数类型,后面的取方法不能带上()
var f1:()->() = sc.test//如果带上括号就是调用实例的方法
//将sc的bar方法分离成函数
var f2:(String)->Void = SomeClass.bar //然后使用f1()就相当于调用的就是sc.test()
f1()
//然后使用f2()就相当于调用的就是SomeClass.bar(msg:)
f2("hello") //************方法的外部形参名*************//
class Person{
var name:String
init(name:String){
self.name = name
}
func eat(food:String, _ drink:String ,cigarette:String){
println("\(self.name)吃着\(food)喝着\(drink)抽着\(cigarette)")
}
}
var p = Person(name: "Tom")
p.eat("烤鸭", "啤酒", cigarette: "雪茄")
/*Swift默认为除第一个参数外部添加了外部参数名,与局部参数名一样,如果不需要的话,则用_下划线的方式去掉,添加了外部参数名,不是添加了#号*/ /************值类型的可变方法*************/
struct JKRect {
var x:Int
var y:Int
var width:Int
var height:Int
mutating func moveByX(x:Int,y:Int){
self.x += x
self.y += y
}
}
var rect = JKRect(x: , y: , width: , height: )
rect.moveByX(, y: )
println("矩形的左上角的x坐标为:\(rect.x),y坐标为\(rect.y)")
/*注意:常量类型的结构体,枚举时不可变的*/

运行结果是:

Swift面向对象基础(中)——Swift中的方法