习惯了C#了语法,看到下面的这样定义输入参数实在感到非常别扭,func 有点 Javascript的感觉,还算习惯。函数调用与其他语言没什么区别
//有输入参数和返回值的函数 //输入参数为名name,数据类型为String //返回值 String类型 func SayHello(name:String) ->String { return "Hello,"+name; } //调用函数 SayHello("_luo")
// 2.1 多重输入参数 ( Multiple Input Parameters ) func HalfOpenRangeLength(start:Int,end:Int) ->Int{ return end - start; } // 2.2 无参函数 ( Functions Without Parameters ) func SayHelloWorld()->String{ return "Hello World"; } // 2.3 无返回值函数 ( Functions Without Return Values ) func SayGoodbye(name:String){ println("Goodbye,\(name)"); } // 2.4 多重返回值函数 (Functions with Multiple Return Values ) //你可以用元组(tuple)类型让多个值作为一个复合值从函数中返回。 //计算一个字符串中元音,辅音和其他字母的个数 func Count(str:String)->(vowels:Int,consonants:Int,others:Int){ var vowels=0,consonants=0,others=0; for item in str { switch String(item).lowercaseString{ case "a","e","i","o","u":vowels++; case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z":consonants++; default:others++; } } return (vowels,consonants,others); }
上面的函数中的参数名仅在函数体中使用,不能这函数调用时使用,这种类型的参数名称为[局部参数名]。
与C#相比,Swift 有外部参数名。
外部参数名,是为了在调用函数时,可以指出各个实参的用途是什么。
(个人觉得实在是太不人性化了,为了知道这个参数的意义还要弄个外部参数名。C#就比较好了 在vs,只要写了注释,调用的时候就会显示各个参数的用途,顿时感觉到vs的强大)
// 3.1 外部参数名 ( External Parameter Names ) //外部参数名写在局部参数名之前,用空格分隔 //如果你提供了外部参数名,那么函数在被调用时,必须使用外部参数名。 //----没有外部参数名的写法