iOS经典讲解之Swift函数详解(一)
来源:互联网 发布:淘宝联盟怎么合并付款 编辑:程序博客网 时间:2024/06/04 18:57
作者:Loving_iOS
转载请标明出处:http://blog.csdn.net/loving_ios/article/details/49365233本次讲解的开发环境为Xcode7.0.1 创建playground文件,进行的代码编写。
//***********************函数*************************/* 函数 语法格式: func 函数名(参数列表)—>返回值类型{ 函数实现...}*/// 无参 无返回值func func1() { print("hello")}func func2() -> Void { print("hello")} // 和上面等价// 函数调用func1()func2()// 有参// 1.关于内部参数名 只在函数作用域内部使用func func3(name:String, age:Int) { print("name= \(name) age = \(age)")}// func3(<#T##name: String##String#>, age: <#T##Int#>) 除了第一个参数 其他参数 在调用时会自动生成 与参数名相同的外部参数名// 原则上在定义函数时第一个参数的外部变量名应该写在函数名后面 如://func func3Name(name:String, age:Int)func3("Bob", age: 18)// 除了上面的方式外 函数参数的外部参数名可以自己添加 添加规则: 在内部参数名前面添加 用空格隔开func func4(mingzi name:String, nianling age:Int) { print("name= \(name) age = \(age)")}func4(mingzi: "Tom", nianling: 20)// 使用占位符 _省略掉外部参数名func func5(name:String, _ age:Int) { print("name= \(name) age = \(age)")}func5("john", 20)// 可以给函数的参数赋初值func func6(name:String = "jack", age:Int = 12) { print("name= \(name) age = \(age)")}// 在调用时注意//1.不传参数则使用初值// func6()// 2.传一个参数则替换掉第一个参数的初值//func6("mary")// 3.可以指定修改那个参数func6(age: 20)// 有返回值的时候func func7() -> String { return "你好"}func7()// 不确定参数个数func func8(numbers:Int...) -> Int { var sum = 0 for number in numbers { sum += number } return sum }func8(2, 4, 5)// 参数在函数体内默认是不变的 用var修饰后可变func func9(var num1:Int, num2:Int) -> Int { num1 += num2 return num1}func9(1, num2: 3)// inout修饰参数 将外部变量的地址传过来 从而改变外部变量的值func func10(inout num:Int) { num++}var number2 = 10func10(&number2)number2// 练习:给一个字符串返回元音和辅音的个数func count(tempString:String) -> (Int, Int) { var num1 = 0 var num2 = 0 for charStr in tempString.characters { switch charStr { case "a", "e", "i", "o", "u": num1++ default: num2++ } } return (num1, num2)}count("hfejflekf")// 函数嵌套:函数作用域内定义了另外一个函数 内层函数的作用域内可以使用外层函数的参数func function(var number:Int) { number++ func function1() { number++ } function1() number }function(3)// 返回类型为函数类型func function2() -> ((Int)->String) { func hanshu(num:Int) -> String { return "num = \(num)" } return hanshu // 只写返回的函数名}let hanshu = function2()hanshu(2)//练习: 声明一个函数 实现功能:传入“+”“-”“*”“/”字符串返回对应运算函数:如传入"+" 返回 int + int = int// 方法一:func operators(str:String) -> ((Int, Int) -> Int)? { func add(num1:Int, num2:Int) ->Int { return num1 + num2 } func minus(num1:Int, num2:Int) ->Int { return num1 - num2 } func mult(num1:Int, num2:Int) ->Int { return num1 * num2 } func div(num1:Int, num2:Int) ->Int { return num1 / num2 } switch str { case "+": return add case "-": return minus case "*": return mult case "/": return div default: return nil } }let addFunction = operators("+")addFunction!(2, 3) // 使用可选类型 使用时要解包let minusFunction = operators("-")minusFunction!(3, 2)let multFunction = operators("*")multFunction!(2, 3)let divFuncton = operators("/")divFuncton!(3, 2)// 方法二:func operations(str:String) -> ((Int, Int) ->Int)? { func operation(num1:Int, num2:Int) -> Int { switch str { case "+": return num1 + num2 case "-": return num1 - num2 case "*": return num1 * num2 case "/": return num1 / num2 default: return 0 } } return operation }// 方法一和方法二的运算结果没有区别 注意:函数返回值为函数时可以用函数嵌套实现,但不是必须使用函数嵌套。方法一可以将内层函数放在外面一样可以,因为内层的函数没有使用外层函数的参数,而方法二必须嵌套,因为内层函数用了外层函数的参数// 可以给函数类型起别名typealias funcType = (Int, Int) ->Intfunc function3() -> funcType { func function(num1:Int, num2:Int) ->Int { return num1 + num2 } return function}
1 0
- iOS经典讲解之Swift函数详解(一)
- iOS经典讲解之Swift数据类型详解
- iOS经典讲解之Swift分支结构与循环详解
- iOS经典讲解之Swift匿名函数(闭包)(二)
- iOS经典讲解之Swift结构体和类
- iOS激情详解之Swift (一)
- iOS swift学习之入门详解(函数)
- iOS经典讲解之实现App消息推送功能(一)
- iOS经典讲解之UICollectionView
- iOS经典讲解之NSUserDefaults
- iOS经典讲解之Swift枚举(Enum)、协议(protocol)、扩展(Extension)
- iOS巅峰之Swift 函数, 闭包详解(下)
- IOS Swift学习之函数
- iOS经典讲解之妙用UITextView
- iOS经典讲解之NSNotification(通知)
- iOS经典讲解之清除缓存文件
- iOS经典讲解之Socket使用教程
- iOS经典讲解之设置颜色注意事项
- Android开发架构模式MVP的简单思考
- 将整形数据类型转成id类型
- 使用事件循环
- Spring注解讲解
- Git学习 --> 个人常用命令add,commit以及push
- iOS经典讲解之Swift函数详解(一)
- 51NOD1264线段相交
- Parallels Desktop 11 for Mac新增功能
- 168、Excel Sheet Column Title
- PHP的单例模式
- NMEA-0183 协议 ——GPS芯片输出标准格式
- poj1845 Sumdiv 数论
- windows重启mysql命令
- MSBuild入门