1.没有参数没有返回值得函数
func about() -> Void{
print("iPhone 7")
}
about()
func about1(){
print("iPhone 7")
}
2.没有参数有返回值的函数
func readMessage() -> String{
return "哈哈"
}
readMessage()
3.有参数没有返回值得函数
func callPhone(phoneNum : String){
print("打电话\(phoneNum)");
}
callPhone(phoneNum: "21789")
4.有参数有返回值得函数
func sum(num1 : Int,num2 : Int) ->Int{
return num1 + num2
}
sum(num1: 20, num2: 30)
函数的使用注意一,
swift 中的默认参数
func makeCoffee(coffeeName : String = "雀巢") -> String{
return "制作了一杯\(coffeeName)咖啡"
}
makeCoffee(coffeeName: "猫屎")
makeCoffee(coffeeName: "拿铁")
makeCoffee()
注意二 :可变参数
func sum1(num : Int...) -> Int{
var result = 0
for n in num{
result+=n
}
return result
}
//sum1(num: 13)
sum1(num: 18,17,30)
注意三:指针类型
var m = 20
var n = 30
func swapNum( m : Int, n :Int){
var m = m
var n = n
let tempNum = m
m = n
n = tempNum
}
swapNum(m: m, n: n)
print("m:\(m),n:\(n)")
func swapNum2( m: inout Int, n:inout Int){
let tempNum = m
m = n
n = tempNum
}
swapNum2(m: &m, n: &n)
print("m:\(m),n:\(n)")
注意四 :函数的嵌套使用
func test(){
func demo(){
print("demo")
}
print("test")
demo()
}
test()
1.类的定义
2.创建类对应的对象
3.给类的属性赋值
1>直接赋值
2>通过KVC赋值
4.可以重写setValue(_ value: Any?, forUndefinedKey key: String)那么字典中没有的字段可以在类中没有对应的属性
5.override: 重写,如果写的某一个方法是对父类的方法进行的重写,那么必须在该方法前加上override
class Person : NSObject{
var age : Int = 0
//override: 重写,如果写的某一个方法是对父类的方法进行的重写,那么必须在该方法前加上override
override func setValue(_ value: Any?, forUndefinedKey key: String) {
}
}
let p = Person()
p.age = 18
p.setValuesForKeys(["age":18,"name":"ws"])
print(p.age)
二、如何定义类的属性
class Student : NSObject{
// 定义属性
// 定义存储属性
var age : Int = 0
var name : String? = nil//可选类型nil可写可不写
var mathScore : Double = 59.9
var chineseScore : Double = 78.8
定义方法,可以返回平均成绩
func getAverage() -> Double {
// 在swift开发中,如果使用当前对象的一个属性,或者调用当前对象的某个方法时,可以直接使用,不需要加self
return mathScore+chineseScore
}
定义计算属性:通过别的方式计算结果的属性称之为计算属性
var average : Double{
return (mathScore + chineseScore)*0.5
}
定义类属性:类属性是和整个类相关的属性,而且是通过类名进行访问
static var courseCount : Int = 0
}
给类属性进行赋值
Student.courseCount = 2
let stu = Student()
stu.age = 10
stu.name = "yz"
stu.mathScore = 78
stu.chineseScore = 67.6
print(stu.age)
print(stu.name)
if let name = stu.name{
print(name)
}
let averageScore = (stu.mathScore + stu.chineseScore)*0.5
let average = stu.average
类的构造函数
class Person1 : NSObject{
var name : String?
var age : Int = 0
override init(){
//在构造函数中,如果没有明确super.init(),那么系统会帮助调用 super.init()
print("----")
}
自定义构造函数
init(name: String, age : Int){
self.name = name
self.age = age
}
传字典
init(dict : [String :AnyObject]) {
let tempName = dict["name"]
//tempName 是一个AnyObject?,转成String?
// as? 最终转成的类型是一个可选类型
//as! 最终转成的类型是一个确定的类型
name = tempName as? String;
if let tempAge = dict["age"] as? Int {
age = tempAge
}
}
init(dict : [String : AnyObject]) {
super.init()
setValuesForKeys(dict)
}
override func setValue(_ value: Any?, forUndefinedKey key: String) {
}
let p1 = Person1()
let p2 = Person1(name: "why",age:19)
print(p2.age)
print(p2.name)
let p3 = Person1(dict:["name":"sa" as AnyObject,"age":12 as AnyObject,"height":1.88 as AnyObject])
print(p3.name)
print(p3.age)
监听属性的改变
class Person2 : NSObject{
// 属性监听器
var name : String?{
willSet{
// 属性即将改变时进行监听
print("1111");
print(name)
print(newValue)
}
didSet{
// 属性已经改变时进行监听
print("2222");
print(name)
print(oldValue)
}
let p4 = Person2()
p4.name = "why"
p4.name = "yz"
网友评论