这里定义了两个函数,第二个个有参,而且有返回值,返回值用->来分开,第一个是一个普通的函数,没参没返回值。
let a: Int = 5; func test(){ print("asdfa"); }
//调用
test() func test1(a: Int) ->Int { return 1 }
//调用
test1(5)
有常量,没有固定参数的函数,参数可变用... 给默认值直接=某个值
//1.有默认值的情况,参数统统都放在后面(参数没有变量的) //2.调用时参数顺序,尽量与声明函数时的顺序一样 func add(initNum: Int = 0,numbers:Int...)->Int { var totals = initNum for num in numbers { totals += num } return totals }
参数是变量,参数是一个相当指针的,引用参数
//默认情况,其参数是常量 func vtest( var a: Int) ->Int{ /// return (++a) } var m = 6 let result = vtest(m) m func vtest2( inout a: Int) ->Int{ /// a++ return a } vtest2(&m) m
函数是一等公民,这意味着可以作为另个的返回值。这里返回的是函数里的函数的返回值
func makeIncrementer() -> (Int -> Int) { func addOne(number: Int) -> Int { return 1 + number } return addOne } var increment = makeIncrementer() increment(7)
函数 也可以当做参数传入另一个函数。
这里将lessThanTenchua这个函数 传入函数hasAnyMatches找出小于10的数
func hasAnyMatches(list: Int[], condition: Int -> Bool) -> Bool { for item in list { if condition(item) { return true } } return false } func lessThanTen(number: Int) -> Bool { return number < 10 } var numbers = [20, 19, 7, 12] hasAnyMatches(numbers, lessThanTen)