Swift从零开始学习_03

Swift第三天

一.函数

定义一个函数, 函数名叫sayHello, 参数为:personName, 类型是String, 返回值为一个字符串

func sayHello(personName:String)->String{
    return "My name is " + personName
}
println(sayHello("Chris"))

多参有返回值的函数

func mathPlus(firstNum:NSInteger, secondNum:NSInteger)->NSInteger{
    return firstNum + secondNum
}
println(mathPlus(1,3))

无参数有返回值的函数, 需要注意的是有返回值的函数也可以忽略掉返回值的, 可以不去接收就可以了

func sayHelloAgain()->NSString{
    return "Hello again!"
}
println(sayHelloAgain())
sayHelloAgain()

有参无返回值的函数

func sayHello1(firstName:NSString){
    println("\(firstName) say Hello")
}
sayHello1("Chris")

多返回值的函数, 感觉这个函数看着好别扭, 感觉这个返回值就像是OC中的返回一个字典一样, 同样的参数是可以不要的

func funcTest(testString:String)->(firstName:String, lastName:String, team:String){
    return ("Chris", "Paul", "LAC")
}
let paul = funcTest("paul")
println(paul.firstName)

问题来了, 这样创建的函数没有了之前OC里常用的外部参数名了,也就是说我们只知道他需要一个字符串, 却不知道这个参数是干嘛的了.这就涉及到外部参数和局部参数了

func doTest(userName firstName:String, userTeam team:String)->String{
    return firstName + " is " +  team
}//这里的外部参数其实就是我们可以在调用函数看到的
println(doTest(userName: "Chris", userTeam: "LAC"))

如果嫌麻烦, 就在参数前面加一个#,这样系统就会默认局部参数名和外部参数名都是这一个了

func testFunc(#firstName:String)->String{
    return "My name is " + firstName
}
println(testFunc(firstName: "Chris"))

初始化参数, 可以在函数定义的时候就给参数赋上值, 这样在调用函数的时候, 就可以不指定该参数, 但问题是不提示啊, 感觉Swift中好多东西都不会提示, 好烦人

func join(string s1: String, toString s2: String, withJoiner joiner: String = " ") -> String {
    return s1 + joiner + s2
}
println(join(string: "Chris", toString: "Paul"))

给参数赋初值后, 系统会默认给它添加外部参数名, 跟#是一样的效果

func join1(s1:String, joiner:String = " ",s2:String)->String{
    return s1 + joiner + s2
}
println(join1("Chris", joiner: "_", "Paul"))

可变参数的情况, 用...

func makePlus(numbers:NSInteger...)->NSInteger{
    var sum:NSInteger = 0
    for num in numbers{
        sum += num
    }
    return sum
}
makePlus(1,2,3,4)//这里的参数需要删除最后的...,不然不会走函数

参数是可变类型的, 这样就可以根据自己需要的去传入参数了

func makeTest(var #str:String)->String{
    return str
}
let s = "test"
makeTest(str: s);)//这里不知道为什么会需要一个分号, 也是醉了

输入输出参数, 意味把该参数做完处理之后, 输出该参数

func swapTwoInts(inout a: Int, inout b: Int) {
    var x = a
    a = b
    b = x
}//该函数把a,b互换
var someInt = 3
var anotherInt = 6
swapTwoInts(&someInt, &anotherInt)
println(someInt)
println(anotherInt)

结语

函数这一块, 其实还是挺好理解的, 就是一些语法习惯不一样, 以后用的多了估计就慢慢习惯了.--CP

转载于:https://www.cnblogs.com/humbleCP/p/4260294.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值