《从零开始学Swift》学习笔记(Day 19)——函数参数传递-阿里云开发者社区

开发者社区> 技术小阿哥> 正文

《从零开始学Swift》学习笔记(Day 19)——函数参数传递

简介:
+关注继续查看

函数的语法格式如下:

func 函数名(参数列表) -> 返回值类型 {

    语句组

    return 返回值

}

关键字是func

多个参数列表之间可以用逗号(,)分隔,也可以没有参数。

使用箭头“->”指示返回值类型。返回值有单个值和多个值。如果函数没有返回值,则“->返回值类型”部分可以省略。

如果函数有返回值,就需要在函数体最后使用return语句;如果没有返回值,则函数体中可以省略return语句。

函数定义示例代码如下:

1
2
3
4
5
6
funcrectangleArea(width:Double, height:Double) -> Double {
    let area = width * height
    return area    
}
  
print("320x480的长方形的面积:\(rectangleArea(320, height:480))")

 

传递参数 

介绍几种不同形式的参数。 

  1. 使用外部参数名

为每个参数提供一个可以在函数外部使用的名称,称为外部参数名,修改rectangleArea函数的定义如下:

1
2
3
4
func rectangleArea(Wwidth:Double, H height:Double) -> Double {
    let area = width * height
    return area
}


在局部参数名之前给一个“外部参数名”,用空格分隔。定义代码中的WH就是外部参数名。调用代码如下:

1
2
3
4
print
("320x480
的长方形的面积
:\(rectangleArea(W:320, H:480))")


如果我们提供了外部参数名,那么在函数调用时,必须使用外部参数名,所以WH不能省略。 

  1. 省略外部参数名

Swift 2.0提供省略外部参数名可能,在定义函数时,使用下划线(_)表示外部参数名,示例代码如下:

1
2
3
4
funcrectangleArea(width:Double, _ height:Double) -> Double {
    let area = width * height
    return area
}


这样函数在调用时就可以省略外部参数名,代码如下:

1
2
3
4
print
("320x480
的长方形的面积
:\(rectangleArea(320480))")


在定义函数时第一个参数不需要使用下划线(_),默认第一个参数名是省略的,其他参数名要想省略则需要使用下划线(_)符号。 

  1. 参数默认值

在定义函数的时候可以为参数设置一个默认值,当调用函数的时候可以忽略该参数。看下面的一个示例:

1
2
3
func makecoffee(type :String = "卡布奇诺") -> String {
    return "制作一杯\(type)咖啡。"
}

在调用的时候,如果调用者没有传递参数,则使用默认值。调用代码如下:

1
2
let coffee1 = makecoffee("拿铁")
let coffee2 = makecoffee()


最后输出结果如下:

制作一杯拿铁咖啡。

制作一杯卡布奇诺咖啡。

 

  1. 可变参数

Swift中函数的参数个数可以变A化,它可以接受不确定数量的输入类型参数,它们具有相同的类型。我们可以通过在参数类型名后面加入(...)的方式来指示这是可变参数。

下面看一个示例:

1
2
3
4
5
6
7
func sum(numbers:Double...) -> Double {
    var total: Double = 0
    for number in numbers {
        total += number
    }
    return total
}


下面是两次调用sum函数代码:

1
2
sum(100.02030)
sum(3080)


可以看到每次传递参数的个数是不同的。


本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1746245,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
初步学习Swing
一直就想学习java的桌面编程,可惜直到现在因为是在unix上的原因并不需要java程序有界面,不过自己还是想好好学习学习。
672 0
DrawIndexedPrimitive参数详解
HRESULT DrawIndexedPrimitive( [in]  D3DPRIMITIVETYPE Type, [in]  INT BaseVertexIndex, [in]  UINT MinIndex, [in]  UINT NumVertices, [in]  UINT StartIndex, [in]  UINT PrimitiveCount ); MinIndex:这个是相对于VertexBuffer而言,它是指绘画中用到的VertexBuffer的最小索引,感觉他只是提示IndexBuffer数组里最小的Index是值。
648 0
13694
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载