147,函数
来源:互联网 发布:星落五丈原 知乎 编辑:程序博客网 时间:2024/06/05 22:45
1,函数的定义格式
func Calcu(value1:Int,value2:Int)->Int{
return value1 + value2;
}
2,函数的细节
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 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
- 147,函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- UIAlertController 9.0 之后使用
- Oracle APEX 5.0 新手教程(四) 页面动态生成
- 判断ios app 第一次启动
- Xcode 查看运行时ViewController结构
- Java或Android中计算某点是否在多边形中
- 147,函数
- 剑指Offer:树的子结构(JAVA)
- Java过滤器与SpringMVC拦截器之间的关系与区别
- Android 应用真机访问远程服务
- 【VirtualBox】虚拟硬盘格式vdi和vmdk相互转换方法
- 【LVL1_5_c】【课后练习】【3】 求两个数组的对应元素之和。
- Python Argparse 简易指南
- Oracle APEX 5.0 新手教程(五) 登录控制
- Model的合理使用时机