加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift 1.1语言函数参数的特殊情况本地参数名外部参数名

发布时间:2020-12-14 02:46:13 所属栏目:百科 来源:网络整理
导读:Swift 1.1语言函数参数的特殊情况本地参数名外部参数名 7.4 函数参数的特殊情况 声明定义有参函数时,为函数的每一个参数都定义了参数名称。根据参数名定义的形式不同,函数参数包括本地参数和外部参数名两种本文选自swift入门很简单。 7.4.1 本地参数名 本

Swift 1.1语言函数参数的特殊情况本地参数名外部参数名

7.4函数参数的特殊情况

声明定义有参函数时,为函数的每一个参数都定义了参数名称。根据参数名定义的形式不同,函数参数包括本地参数和外部参数名两种本文选自swift入门很简单。

7.4.1本地参数名

本地参数名就是定义函数名时,在参数列表中所写的参数名,它只可以在函数主体内使用。如以下的一个代码片段,它定义了一个函数名为fun的函数,在此函数的参数列表中定义的就是本地参数名文选自swift入门很简单

  • func fun(start:Int,end:Int,str:String){

  • ……

  • }

在以上的代码中,定义的参数名startendstr都是本地参数名。它只可以在函数本身的代码中使用,在调用时就不可以使用了。

7.4.2外部参数名

在函数中,如果每一个参数的目的不是很明确或者是含糊不清的,那么对于其他开发者来说,是很难理解参数的目的。例如下面的代码,它是一个具有字符串连接功能的函数,代码如下文选自swift入门很简单

  • func join(s1: String,s2: String,s3: String) {

  • println("(s1)(s3)(s2)")

  • }

  • join("hello","world",",")

对于这么一个函数来说,参数s1s2s3只知道是三个字符串,但是涉及到每一个参数的具体目的,就不是很容易理解了。为了解决这一难题,Swift提供了外部参数名称。外部参数和本地参数的定义是一样的。但是如果开发者需要更好的表达参数的功能,需要在定义时使用外部参数名。外部参数名需要写在本地参数名之前,并使用空格将其分开。它的一般形式如下:

  • func函数名(外部参数名本地参数名:数据类型){

  • 对于外部参数名的函数,调用形式如下:

    • 函数名(外部参数名:参数值)

    【示例7-7】以下示例为具有字符串连接功能的函数定义外部参数。代码如下:

    • func join(string s1: String,tostring s2: String,joiner s3: String) {

    • println("(s1)(s3)(s2)")

    • }

    • join(string: "Hello",tostring: "Swift",joiner: ",")

    • 其中,stringtostringjoiner都是外部参数名。运行结果如下:

    • Hello,Swift

    • Program ended with exit code: 0

    这里需要注意以下三点:

    1)调用时使用外部参数:如果为参数提供了一个外部参数名后,需要在调用该函数的同时使用外部参数名。否则,程序就会提示错误。例如下面的具有字符串连接功能的函数调用代码文选自swift入门很简单

    • join("Hello","Swift",sans-serif;font-size: 14px;line-height: 21px;white-space: normal">由于在上方的代码中没有使用外部参数名stringtostringjoiner,所以出现了以下的错误提示:

      • Missing argument labels 'string:tostring:joiner:' in call

      2)参数的顺序:使用外部参数名可以很好的让其他开发者理解各个参数的目的,但是它的调用顺序也必须要和定义声明函数时的一致。例如以下代码调用具有字符串连接功能的函数:

      • join(tostring: "Swift",string: "Hello",")

      在声明定义函数时参数的顺序为(string,tostring,joiner),而在调用时顺序为(tostring,string,joiner)。由于顺序不一样,导致程序出现以下的错误信息:

      • Argument 'string' must precede argument 'tostring'

      3)外部参数名称的快速写法:如果开发者想要为函数的参数提供一个外部参数名,然而本地参数名已经使用了一个合适的名称,这时就不需要再为该参数写相同的两次名称了。取而代之的是,写一次名称,并用一个“#”号作为名称的前缀。它会告诉编译器,这里使用该名称作为本地参数名和外部参数名。其一般的形式如下:

      • (#本地参数名【示例7-8】以下程序实现字符串连接功能,外部参数名的定义使用了“#”号。代码如下文选自swift入门很简单

        • import Foundation

        • func join(#string:String,#tostring: String,#withJoiner:String) {

        • println("(string)(withJoiner)(tostring)")

        • }

        • join(string: "hello",tostring: "world",withJoiner: ",sans-serif;font-size: 14px;line-height: 21px;white-space: normal">虽然定义的时候可以使用“#”简写,但是调用的时候必须写完整的外部参数名。

          7.4.3设定参数默认值

          在定义函数的时候,可以为参数设定默认值。这样,在调用的时候,就不用再传递该参数的值。

          【示例7-9】以下的代码就为startend参数分别定义了默认值05,其功能是输出05的数值。代码如下:

          • import Foundation

          • //声明定义函数

          • func fun(start:Int=0,end:Int=5){

          • var i=start

          • for i;i<=end;++i{

          • println(i)

          • }

          • }

          • fun()//调用

          代码中,函数fun()调用的时候没有传递任何参数值。这是由于定义函数fun()时参数startend都有默认值,所以调用的时候就可以不传递参数。运行结果如下所示文选自swift入门很简单

          • 0

          • 1

          • 2

          • 3

          • 4

          • 5

          • Program ended with exit code: 0

          注意:在使用默认值是需要注意以下几点:

          1)定义时,将使用默认值的参数放在函数的参数列表的末尾。这确保了调用函数时候,不会因为省略参数值而影响不具备默认值的参数的顺序。

          2)调用时,如果参数的默认值已经被设置,可以省略该参数的传值。

          3)如果开发者设定了默认值,但在调用时想要改变默认值,也可以继续赋值。

          【示例7-10】以下代码输出38之间的数值,包括38。代码如下:

          • import Foundation

          • func fun(start:Int=0,end:Int=3){

          • var i=start

          • for i;i<=end;++i{

          • println(i)

          • }

          • }

          • println("使用默认值范围")

          • fun()

          • println("使用改变后的范围")

          • fun(start:3,end:8)//改变了默认值

          在代码中,第一次调用使用了参数的默认值,第二次调用改变了参数的默认值。运行结果如下文选自swift入门很简单

          • 使用默认值范围

          • 0

          • 1

          • 2

          • 3

          • 使用改变后的范围

          • 5

          • 6

          • 7

          • 8

          • Program ended with exit code: 0

          在为参数设定默认值后,Swift会自动为该参数提供了同名的外部参数名。如果调用时需要改变默认值,必须使用外部参数,不能直接赋值。否则,就会出现错误,如以下的代码:

          • fun(3,8)

          在此代码中,对startend进行了直接赋值,所以导致程序错误,其错误信息如下所示文选自swift入门很简单

          • Missing argument labels 'start:end:' in call

          (编辑:李大同)

          【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读