Swift 学习之函数和闭包与对象和类—002

/*************************函数和闭包**********************/


//使用func来声明一个函数,使用名字和参数来调用函数。使用->来指定函数返回值

func test(name: String,age: Int) -> String{

    return "I am \(name),I am \(age)"

}

test("pengzhihao", 25)


func greet(name: String,day: String) -> String{

    return "Hello \(name),today is \(day)"

}

greet("pengzhihao", "Monday")


//无参函数

func getGasPreces() -> (Double,Double,Double){

 return(3.59, 3.69, 3.79)

}

getGasPreces()


//函数的参数数量是可变的,用一个数组来获取它们

func sumOf(numbers: Int...) -> Int{

    var sum = 0

    for number in numbers{

    sum += number

}

    return sum

}

sumOf()

sumOf(42,28)


//函数可以嵌套,被嵌套的函数可以访问外侧函数的变量

func returnFifteen() -> Int{

var y = 10

    func add(){

      y += 5

    }

    add()

    return y

}

returnFifteen()


//函数可以作为另一个函数的返回值

func makeIncrementer() -> (Int ){

    func addOne(number: Int) -> Int{

       return 1 + number

    }

return addOne(15)

}

makeIncrementer()


//函数可以当做参数传入另一个函数

func lessThanTen(number: Int) -> Bool{

  return number<10

}


var numbers = [20, 19, 17, 12]


func hasAnyMatches(list: [Int],condition: Int -> Bool) -> Bool{

    for item in list{

        if condition(item){

        return true

    }

  }

    return false

}


hasAnyMatches(numbers, lessThanTen)


/*************************对象和类**********************/

//使用class和类名来创建一个类,类中的属性声明和方法声明分别与变量声明和函数声明一样

class Shape{

    var numbersOfSizes = 0

    let color = "red"

    

    func simpleDescreption() -> String{

    return "A shape with \(numbersOfSizes) sides"

    }

    

    func getColor(color: NSString) -> String{

    return "color is \(color)"

    }

}


var shape = Shape()

//不能再给 shape color 赋值,因为该属性为常量

//cannot assign to 'color' in 'shape'

//shape.color = "gree"

shape.numbersOfSizes = 7


let color = shape.getColor("gree")

var sides = shape.simpleDescreption()


shape


//添加构造函数来初始化类实例,使用 init 来创建一个构造器

class NameShape {

    var numberOfSides: Int = 0

    var name: String

    

   init(name: String) {

      self.name = name

    }

    

    func simpleDescreption() -> String{

        return "A shape with \(numberOfSides) sides"

    }

}


var nameShape = NameShape(name: "pengzhihao")



//创建一个 NameShape 的子类

class Square: NameShape {

    var sideLength: Double

 

    init(sideLength: Double,name: String) {

    self.sideLength=sideLength

    super.init(name: name)//调用父类的 init 方法

    numberOfSides = 4

  }

    //如果父类中没有该方法,如果子类添加 override 也会报错

    func area() -> Double {

     return sideLength * sideLength

    }


    //如果重写父类的方法,需要在 func 前添加 override

     override func simpleDescreption() -> String{

        return "A shape with sides of length \(sideLength)"

    }


}


let test = Square(sideLength: 5, name: "my test square")

test .area()

test.simpleDescreption()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值