Swift函数

函数定义

  • 格式:func 函数名称(参数名:参数类型, 参数名:参数类型,...) -> 函数返回值 {函数实现部分}

无参无返回值

func say()->Void
{
    print("Hello")
}

func say1() // 如果没有返回值可以省略"->Void"
{
    print("Hi")
}

say()
say1()

无参有返回值

func info() -> String
{
    return "name = hjq, age = 28"
}
print(info())

有参无返回值

func sayWitchName1(name:String, age:Int) -> Void {
    print("hello \(name), I'm \(age) years old")
}
sayWitchName1(name: "baobao", age: 20)

有参有返回值

func info(name:String, age:Int) -> String
{
    return "name = \(name), age = \(age)"
}
print(info(name: "HaRi", age: 26))

函数类型

  • Swift的函数类型是由函数的参数类型和返回值类型组成的,类似于C语言的指向函数的指针,类似于OC语言的block。
  • 可以利用函数类型定义函数变量和常量
// 这两个函数类型为: (Int, Int) -> Int
func sum(a: Int, b: Int) -> Int
{
    return a + b
}
func sub(a: Int, b: Int) -> Int
{
    return a - b
}

// 可以利用函数类型定义函数变量和常量
var funcP:(Int, Int) -> Int = sum
//funcP = sub // 赋与同一类型都可以
print(funcP(10,20))    //输出30
funcP = sub
print(funcP(10,20))    //输出-10
  • 函数类型可以作为函数的参数
func calFunc(a: Int, b: Int, Option:(Int, Int) -> Int) -> Int
{
    return Option(a, b)
}
print(calFunc(a: 10, b: 20, Option: sum))    //输出30
print(calFunc(a: 10, b: 20, Option: sub))    //输出-10
  • 函数类型可以作为返回值
func max(a: Int, b: Int) -> Int
{
    return a > b ? a : b
}
func min(a: Int, b: Int) -> Int
{
    return a > b ? b : a
}
func chooseFunc(getMax:Bool) -> (Int, Int) -> Int
{
    return getMax ? max : min
}
var funcP2:(Int, Int) -> Int = chooseFunc(getMax: true)
print(funcP2(10, 20))    //输出20

函数参数

  • 默认参数:在定义函数的时候给某个参数赋值, 当外部调用没有传递该参数时会自动使用默认值
func joinString2(s1:String ,toString s2:String, jioner s3:String = "默认值") -> String
{
    return s1 + s3 + s2
}
print(joinString2(s1: "hello", toString: "xiaohange"))    //输出:hello默认值xiaohange
  • 传递指针:如果想在函数中修改外界传入的参数,需要inout关键字,这会传入参数本身而不是参数的值
func swap3(a: inout Int,b: inout Int)
{
    let temp = a
    a = b
    b = temp
}
var x1 = 10
var y1 = 20
print("交换前 x1 = \(x1), y1 = \(y1)")
swap3(a: &x1, b: &y1)
print("交换后 x1 = \(x1), y1 = \(y1)")
/**
输出结果:
交换前 x1 = 10, y1 = 20
交换后 x1 = 20, y1 = 10
*/
  • 变参函数(参数个数不确定):只能放到参数列表的最后一位, 变参必须指定数据类型, 变参只能是同种类型的数据
func add2(nums:[Int]) -> Int {
    var sum = 0
    for num in nums {
        sum += num
    }
    return sum
}
print(add2(nums: [1,2,3]))    //输出6

func add3(nums:Int...) -> Int
{
    var sum = 0
    for num in nums {
        sum += num
    }
    return sum
}
print(add3(nums: 1,2,3))    //输出6

函数参数前的"_"

  • 函数参数前的"_"表示调用时可忽略该参数名称,如下
func someFunction(_ firstParameterName: Int, secondParameterName: Int) {
     // 在函数体内,firstParameterName 和 secondParameterName 代表参数中的第一个和第二个参数值
} 

调用方式:someFunction(1, secondParameterName: 2)

你可能感兴趣的:(Swift函数)