常量参数和变量参数输入输出参数Swift 1.1语言快速入门大学霸

 常量参数和变量参数输入输出参数Swift 1.1语言快速入门大学霸

Swift语言快速入门v3.0

Swift语言快速入门v3.0

常量参数和变量参数在函数中,参数默认都是常量。如果想要改变一个函数参数的值,会引起程序错误。如以下代码 常量参数和变量参数输入输出参数Swift 1.1语言快速入门大学霸:

func fun(num:Int){

num=num+1

println(num)

}

常量参数和变量参数输入输出参数Swift 1.1语言快速入门大学霸在此代码中,函数参数num默认是一个常量,而常量的值是不能改变的,所以导致程序出现如下的错误信息

Cannot assign to ‘let’ value ‘num’

如果想要对参数进行修改,必须要使用一个类似于变量的参数,Swift称之为变量参数。变量参数的定义就是在参数名前使用一个var关键字。以下的代码就是使用了变量参数实现了字符串右对齐的功能。代码如下 常量参数和变量参数输入输出参数Swift 1.1语言快速入门大学霸:

import Foundation

func alignRight(var string: String, count: Int, pad: String) {

let amountToPad = count – countElements(string)                                  //获取输入”*”的个数

//遍历

   for _ in 1…amountToPad {

        string = pad + string

    }

println(string)

}

let originalString1 = “swift”

alignRight(originalString1, 10, “*”)

let originalString2 = “Hi”

alignRight(originalString2, 10, “*”)

let originalString3 = “”

alignRight(originalString3, 10, “*”)

运行结果如下所示:

*****swift

********Hi

**********

Program ended with exit code: 0

注意:变量参数只能存在于函数调用的生命周期中。

7.4.7  输入-输出参数 常量参数和变量参数输入输出参数Swift 1.1语言快速入门大学霸

以上所讲的参数只可以在函数本身内改变。例如以下的代码,想要实现对a和b数值的交换。代码如下:

import Foundation

func swapTwoInt(var number1: Int, var number2: Int) {

//实现两个整数的交换

let temp = number1

number1 = number2

number2 = temp

 println(“函数体内:a=\(number1)”)

    println(“函数体内:b=\(number2)”)

}

var a=2

var b=3

println(“交换前”)

println(“a=\(a)”)

println(“b=\(b)”)

println(“交换后”)

swapTwoInt(a, b)

println(“a=\(a)”)

println(“b=\(b)”)

运行结果如下所示:

交换前

a=2

b=3

交换后

函数体内:a=3

函数体内:b=2

a=2

b=3

Program ended with exit code: 0

在运行结果中可以看到,a和b的值可在函数本身内实现了交换。如果开发者想用一个函数来修改参数的值,并且想让这些变化在函数调用后仍然有效。这时,需要定义输入-输出参数。它的定义是通过在参数名前加入inout关键字。其语法形式如下 常量参数和变量参数输入输出参数Swift 1.1语言快速入门大学霸:

func 函数名(inout 参数名: 数据类型, ……) {

}

输入-输出参数都有一个传递给函数的值,将函数修改后,再从函数返回来替换原来的值。其调用形式如下:

函数名(&参数, ……)

其中,参数前面加上&操作符。

【示例7-13】以下的代码使用输入输出参数实现a和b数值的交换功能。代码如下:

import Foundation

func swapTwoInt(inout number1: Int, inout number2: Int) {

//实现两个整数的交换

 let temp = number1

    number1 = number2

    number2 = temp

}

var a=2

var b=3

println(“交换前”)

println(“a=\(a)”)

println(“b=\(b)”)

println(“交换后”)

swapTwoInt(&a, &b)

println(“a=\(a)”)

println(“b=\(b)”)

运行结果如下:

交换前

a=2

b=3

交换后

a=3

b=2

Program ended with exit code: 0

注意:如果一个函数的参数是输入-输出参数,在调用时,必须在参数前加一个“&”符号,否则程序就会出现错误。如以下代码,在调用具有输入输出得函数时,在参数前没有添加“&”符号。代码如下 常量参数和变量参数输入输出参数Swift 1.1语言快速入门大学霸:

import Foundation

func swapTwoInt(inout number1: Int, inout number2: Int) {

……

}

var a=2

var b=3

……

swapTwoInt(a, b)

……

由于在函数,调用时没有在参数前添加“&”符号,导致程序出现了以下的错误:

Passing value of type ‘Int’ to an inout parameter requires explicit ‘&’ 常量参数和变量参数输入输出参数Swift 1.1语言快速入门大学霸

Comments are closed.