?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120import Foundation//变量声明使用 //使用 let 来声明常量,使用 var 来声明变量 常量只能为它赋值一次let name="cuiyw";var age:Int=20;//声明时类型是可选的,声明的同时 赋值的话,编译器会自动推断类型var money:Double=200.0;//有一种更简单的把值转换成字符串的方法:把值写到括号中,并且在括号之前写一个反斜杠let infto=name+String(age)+"\(money)";println(infto); //函数//func 函数名( 参数变量:类型 ,参数变量:类型...){}//说明://1: func 是函数关键字//2:{} 函数体//3: 参数变量是默认常量类型,不能在函数函数体里面直接修改//即 func A (value:String) 与 func A (let value:String)写法是相同的,即value 是常量。参数不能修改 //a.无参数无返回值func functest(){ println("functest");} //b.有参数无返回值 可以设置默认值func functest(name:String,age:Int=23){ println(name+"\(age)")}functest("cyw"); //c该方法与b方法一起调用时 都调用b方法//func functest(var name:String)->String//{// name="a1变量参数cyw";// println(name);// return name;//}//functest("cyw"); //func 函数名( var 参数变量 : 类型,... ) {}//说明//1: func 函数关键字//2: var 参数变量 :类型 表示参数变量是可变变量,不是常量,可以任意修改 //d该方法与b方法比较 时各自输出//方法也可以添加一个外部参数名func functest( var personName name:String){ name="a变量参数cyw"; println(name); // return name;}functest("cyw"); //e.有参数有多个返回值func functest()->(String,Int){ return("cuiyw",23); }// f 输入输出函数 inout声明就不能用 var let 声明 同时参数也不能是let声明的func hello( inout sayhello say:String ){ say="hello";}var hello="say hello";hello(sayhello: &hello);println(hello) //g 内部函数func func1(){ func func2() { println("fuc2"); } func2(); }func1(); //h 返回函数类型的函数func add(num:Int)->Int{ return num+1;} func sub(num:Int)->Int{ return num-1;} func func3(num:Bool)->(Int)->Int{ return num ? add:sub;}var num=9;var fun:(Int)->Int=func3(num>10);num=fun(num);println(num); //支持可变参数长度的函数func sumOf(numbers: Int...) -> Int { var sum = 0 for number in numbers { sum += number } return sum}println(sumOf(22,22))println(sumOf(42, 597, 12))