爱程序网

【Swift】 - 函数(Functions)总结 - 比较 与 C# 的异同

来源: 阅读:

1.0 函数的定义与调用( Defining and Calling Functions )

习惯了C#了语法,看到下面的这样定义输入参数实在感到非常别扭,func 有点 Javascript的感觉,还算习惯。函数调用与其他语言没什么区别

//有输入参数和返回值的函数
//输入参数为名name,数据类型为String
//返回值  String类型
func SayHello(name:String) ->String {
    return "Hello,"+name;
}
//调用函数
SayHello("_luo")

2.0 函数参数与返回值 ( Function Parameters and Return Values )

// 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);
}

3.0 函数参数名称 ( Function Parameter Names )

上面的函数中的参数名仅在函数体中使用,不能这函数调用时使用,这种类型的参数名称为[局部参数名]。

与C#相比,Swift 有外部参数名。

外部参数名,是为了在调用函数时,可以指出各个实参的用途是什么。

(个人觉得实在是太不人性化了,为了知道这个参数的意义还要弄个外部参数名。C#就比较好了 在vs,只要写了注释,调用的时候就会显示各个参数的用途,顿时感觉到vs的强大)

// 3.1 外部参数名 ( External Parameter Names )
//外部参数名写在局部参数名之前,用空格分隔
//如果你提供了外部参数名,那么函数在被调用时,必须使用外部参数名。
//----没有外部参数名的写法