函数使用的注意事项:
1.内部参数和外部参数
内部参数:默认情况下所有的参数都是内部参数,默认情况从第二个参数开始既是内部参数也是外部参数。若希望第一个参数也是外部参数,可以在标识符前给该参数添加一个别名
func sum(num1 : Int,num2 : Int) -> Int {
return num1+num2
}
sum( 20, num2 : 20)
func sum(num1 num1 : Int,num2 : Int,num3 : Int) -> Int{
return num1 + num2 + num3
}
sum(num1 : 20, num2 : 30 ,num3 : 30)
2.默认参数
func makeCoffee(coffeeName : String = "雀巢") -> String {
return "制作了一杯(coffeeName)咖啡"
}
makeCoffee("拿铁")
makeCoffee()
3.可变参数
func sum(num : Int...) -> Int {
var result =0
for n in num {
result += n
}
return result
}
sum(18,20,30,40,50,50)
4.指针类型
inout让值类型以引用形式传递
func swapNum(inout m : Int , inout n : Int){
let temp = m
m = n
n = temp
}
swapNum(&m , n : &n)
print("m:(m),n:(n)")
5.函数的嵌套使用
类
override:重写,如果写的某一个方法是对父类的方法进行的重写,那么必须在该方法前加上override
class 类名: SuperClass {
//定义属性和方法
}
定义的类可以没有父类,通常情况下定义类时,继承自NSObject
类的属性 :
存储属性:存储实例的常量和变量
var name : String? = nil (定义成可选类型)
计算属性:通过某种方式计算出来的属性
var average : Double {
return (a+b) * 0.5
}
类属性:与整个类自身相关的属性
static var c : Int = 0
自定义类的构造函数
继承自NSObject的类 重写父类的构造函数
override init( ) {
//在构造函数中,如果没有明确super.init( ),系统会帮助调用super.init( )
print("123")
}
init ( name : String, age : Int)
{
self.name=name
self. age=age
}
init ( dict : [String : AnyObject] ) {
let tempName = dict ["name"]
//tempName是一个AnyObject?,转成String?
name = tempName as? String
if let tempAge = dict["age"] as? Int {
age = tempAge
}
}
//as?最终转成的类型是一个可选类型
//as!最终转成的类型是一个确定的类型
init (dict : [String : AnyObject] ) {
super.init( ) //系统调用是在后面调用
setValuesForKeysWithDictionary(dict)
}
属性监听器
//属性即将改变时进行监听
willSet {
print(newValue) //改变之后的项
}
//属性已经改变时进行监听
didSet {
print(oldValue) //改变之前的项
}
网友评论