147,函数
2015-12-26 16:20
162 查看
1,函数的定义格式
func 函数名(形参列表)->返回值类型{//函数体
}
形参列表格式:
形参名1:形参类型1,形参名2:形参类型2,...
func Calcu(value1:Int,value2:Int)->Int{
return value1 + value2;
}
2,函数的细节
>没有返回值的3种写法func calcu()->Void{
print("没有返回值的3种写法");
}
func calcu()->(){
print("没有返回值的3种写法");
}
func calcu(){
print("没有返回值的3种写法");
}
>一个函数如果没有形参,函数名后面的小括号也不能省略
>一个函数可以返回元组数据
func find(id:Int) -> (name:String,age:Int){
if id > 0{
return ("ljs",10);
}else{
return ("nobody",0);
}
}
var people = find(2);
print("name =
\(people.name),age =
\(people.age)");
//name = ljs,age = 10
3,外部参数名
>外部参数名可以在调用函数时,提醒每个参数的含义,格式如下:func 函数名(外部参数名 形式参数名:形式参数类型)->返回值类型{
//函数体
}
func sum(number1 num1:Int,number2 num2:Int) ->
Int{
return num1 + num2;
}
sum(number1: 10, number2:
30);
//40
注:一旦定义了外部参数名,在调用的时候,就必须加上外部参数名
4,默认值
>在定义函数时,可以给形参指定一个默认值func setPersonInfo(name:String,age:Int =
0){
print("name =
\(name),age =
\(age)");
}
setPersonInfo("ljs");
//name = ljs,age = 0
>带有默认参数值的形参,Swift会自动生成一个跟形参名相同的外部参数名
func setPersonInfo(name:String,age:Int =
0){
print("name =
\(name),age =
\(age)");
}
setPersonInfo("ljs",age:10);
//name = ljs,age = 0
>在带有默认参数值的参数名前,加下划线_,就可以忽略掉外部参数名
func setPersonInfo(name:String,_ age:Int =
0){
print("name =
\(name),age =
\(age)");
}
setPersonInfo("ljs",10);
//name = ljs,age = 0
5,函数形参中的变量与常量
>默认情况下,函数的形式参数都是常量,不能修改>若要修改函数的形式参数,必须在参数名前面加var,将其定义为变量
func setPersonInfo(var name:String,
_ age:Int =
0){
//age = 100; age是常量不能改变,会报错
name = "abc";//name已经是变量,可以改变
print("name =
\(name),age =
\(age)");
}
setPersonInfo("ljs",10);
//name = adc,age = 10
6,输出输入参数
>在Swift中,利用输入输出参数,也可以在函数内部修改外部变量的值。在参数名前面,加一个inout关键字var num:Int =
10;
func changeNum(inout value:Int){
value = 20;
}
changeNum(&num);
print("num = "+String(num));
//20
注:输入输出参数的使用注意
>传递实参时,必须在实参的前面加入&
>不能传入常量或字面量(比如10)作为参数值
>输入输出参数不能有默认值
>输入输出参数不能有可变参数
>输入输出参数不能使用let,var修饰,因为inout跟let,var不能共存
7,面试题
>如何在不使用第三方变量的情况下,交换两个值
var num1:Int =
10;
var num2:Int =
20;
func exchange(inout value1:Int,inout value2:Int)->Void{
value1 = value1 + value2;
value2 = value1 - value2;
value1 = value1 - value2;
}
exchange(&num1, value2: &num2);
print(num1,num2);
//20 10
相关文章推荐
- Java或Android中计算某点是否在多边形中
- 期末总结
- Xcode 查看运行时ViewController结构
- 判断ios app 第一次启动
- Redis Sentinel基本介绍(翻译以及总结)
- 在Mac中像Windows一样查看Tomcat控制台信息
- 判断sqlite数据库中表存在问题
- UIAlertController 9.0 之后使用
- ubuntu 命令行模式和图形界面切换
- cdoj 1134 男神的约会 状压dp
- 多线程模型及示例
- Redis的多线程与多进程
- SDN 网络中的路由规则(二)
- 不久前Twitter展示了具有现代感的心形动画-作为star图标的替代。
- swift元组类型
- POJ3669——BFS经典
- JDK的下载与安装
- windows64位系统安装redis教程
- [zoj2676]
- UISegmentedControl分段控制器