0.3 函数

作者: 笑熬齊澄 | 来源:发表于2017-10-18 10:01 被阅读7次

//----------------  0.3 函数  ---------------

import UIKit

1.Swift 函数基本格式  func 名称 (参数名:参数类型,参数名:参数类型)->返回值

func greet(_ person: String, day: String) -> String {

return "Hello \(person), today is \(day)."

}

var str = greet( "Bob", day: "Tuesday") //调用函数

print(str)

2.Swift默认函数参数名为参数的标签。在参数名称之前可以自定义参数标签,或者 **在参数名前面写 _ 就可以不使用参数标签。**

func greet(_ person: String, on day: String) -> String {

return "Hello \(person), today is \(day)."

}

greet("John", on: "Wednesday")//可以看到 person 前面有 _  所以在调用的时候 person 可以省略

3.使用元组创建一个复合值,例如,从函数返回多个值。元组的元素可以通过名称或数字来引用。

//eg: 找出数组中中的最大最小值,求和

func calculateStatistics(scores:[Int]) -> (min:Int,max:Int,sum:Int){

var min = scores[0]

var max = scores[0]

var sum = 0

for score in scores {

if score > max {

max = score

}else{

min = score

}

sum += score

}

return (min,max,sum)

}

let statistics = calculateStatistics(scores: [5, 3, 100, 3, 9])//statistics即为元组

print("min = \(statistics.min), max = \(statistics.max), sum = \(statistics.sum)")//包装成字符串形式后用\()输出值(😌)

//关于元组小 eg

let st = (frist:123,1234,1234)

print("frist == \(st.frist) ,\(st.1),\(st.2)")

//函数可以嵌套。嵌套函数可以访问在外部函数中声明的变量。

func returnFifteen() -> Int {

var y = 10

func add()-> (Int,Int) {

y += 5

return (y,2)

}

return add().0

}

print(returnFifteen())

4.函数可以返回另一个函数作为返回值进行传递

func makeIncrementer() -> ((Int) -> Int) {//括号中的(Int) -> Int 代表此函数返回的是一个函数

func addOne(number: Int) -> Int {

return 1 + number

}

return addOne

}

var increment = makeIncrementer()//同时你也可以把一个函数当做变量去使用!!!!

increment(7)

5.函数可以作为参数传入函数中处理

func hasAnyMatches(list: [Int], condition: (Int) -> Bool) -> Bool {//(Int) -> 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(list: numbers, condition: lessThanTen)

6.闭包初体验

//函数实际上是一个特殊的闭包情况:稍后可以调用的代码块。闭包中的代码可以访问在创建关闭的范围内可用的变量和函数,即使它们在执行时封闭在不同的范围内 - 您看到已经有嵌套函数的示例。您可以使用大括号({})的周围代码编写一个没有名称的闭包。使用in分离参数和从包体返回类型。({ in })

numbers.map({ (number: Int) -> Int in

let result = 3 * number

return result

})

//您有几个选项可以更简洁地写入闭包。当闭包类型已知时,例如代理的回调,您可以省略其参数的类型,其返回类型或两者。单个语句闭包隐式地返回它们唯一的语句的值。

let mappedNumbers = numbers.map({ number in 3 * number })

print(mappedNumbers)

//您可以通过数字而不是名称来引用参数 - 这种方法在非常短的关闭中特别有用。作为函数的最后一个参数传递的闭包可以在括号后立即显示。当闭包是函数的唯一参数时,可以完全省略括号。

let sortedNumbers = numbers.sorted { $0 > $1 }

print(sortedNumbers)

相关文章

  • 0.3 函数

    //---------------- 0.3 函数 --------------- import UIKit 1....

  • Matplotlib Tricks

    0. 绘图设置 0.0 导入函数包 0.1 全局设置 0.2 设置坐标名称与图标题 0.3 显示图例 0.4 显示...

  • 第一个tensorflow的demo

    首先创建随机的100个数据x_data目标函数y_data =0.1*x_data+0.3这里0.1为Weight...

  • 2019-08-13 测试

    0.1+0.2为什么不等于0.3?如何解决浮点的问题?了解bignumber.js的浮点数库函数 apply(),...

  • BQG100-0.3(QGB50X)煤矿用气动隔膜泵

    BQG100-0.3(QGB50X)煤矿用气动隔膜泵 BQG-100/0.3气动隔膜泵规格:BQG-100/0.3...

  • 【2019-12-26】问题记录

    1、浮点数相加问题 a= 0.3 b= 0.2+0.1 print(a,b) 输出:0.3 0.300000000...

  • 0.3再见

    ...

  • 无名0.3

    0. “有点热。” “那就脱了吧。” “……” 王俊凯觉得酒吧真不是人呆的地方,他为什么要来没罪找罪受,DJ音乐冲...

  • 14. 0.1 + 0.2 != 0.3

    0.1 + 0.2 != 0.3问题一:为什么 0.1 + 0.2 != 0.3?如何解决这个问题? 先说原因,因...

  • 相同小数相减列竖式的注意事项

    相同小数相减时到底应该怎么列竖式呢? 例如(1)1.3—0.3=1 1.3 —0.3 ———— 1.0 (...

网友评论

    本文标题:0.3 函数

    本文链接:https://www.haomeiwen.com/subject/vxssuxtx.html