Swift 函数
1: 函数形式:
Swift函数以关键字func 标示。返回类型->后写明。如果没有返回类型可以省去。多个参数用,分割。其中参数名字在前:类型描述
func GetName(strName:String)-> String
{
return "for " + strName
}
let name = GetName("xx")
println("\(name)")
2:函数返回值:函数返回值用->后跟类型说明符号。函数的多返回值。可以用元组返回复合多值。当然也可以没有返回值。
func TestNoneReturn(strName:String)
{
println("\(strName)")
} TestNoneReturn("xx ")
func TestReturn(strName:String)->String
{
return strName + "hello"
} let showName = TestReturn("xx ")
println("\(showName)")
func TestTupleReturn(iAge:Int, strName:String)->(iAgeAdd:Int, strNameFormat:String)
{
let iAgeReturn :Int = iAge +
let strNameReturn :String = " xx oo " + strName; return (iAgeReturn, strNameReturn)
} let tupleReturn = TestTupleReturn(, "yang ")
println("\(tupleReturn.iAgeAdd) \(tupleReturn.strNameFormat)")
3:函数参数
3.1函数参数默认为let类型的。如果你想更改参数副本,那么你要显示使用var修饰。当然也可以不需要参数的函数。如果你像更改参数作为输入输出用inout,调用时候要用取地址符号&
func GetName(var strName:String)-> String
{
strName += " hello"
return "for " + strName
}
let name = GetName("xx")
println("\(name)")
func GetName(inout strName:String)
{
strName += " hello" }
var strTest = "oo"
GetName(&strTest)
println("\(strTest)")
3.2函数参数名字。函数形参名字有本地形参和外部形参之分。
func TestName(strHead:String, strTail:String, strInsert:String)->String{
return strHead + strInsert + strTail
}
let strRes:String = TestName("head ", "tail ", "insert ")
println("\(strRes)")
func TestName(head strHead:String, tail strTail:String,insert strInsert:String)->String{
return strHead + strInsert + strTail
}
let strRes:String = TestName(head:"head ", tail:"tail ", insert:"insert ")
println("\(strRes)")
如果你外部和本地形参名字一样,那么你可以用#简写。
func TestSameName(#name:String, #age:String)->String{
return "name: " + name + "\nage: " + age
}
let strRes = TestSameName(name:"xx", age:"")
println("\(strRes)")
3.3函数参数默认值:如果设置了函数默认值,那么在调用的时候可以省去默认值的调用。
func TestDefaultParam(name:String, defaultName:String = " defaultNM"){
let nameRes = “\n” + name + defaultName;
println(nameRes)
}
TestDefaultParam("mm")
TestDefaultParam("xx", defaultName:" oo")
3.4 可变形参:用"..."代表可变形参。类型一样
func TestMore(numbers:Int...){
var iRes:Int =
for item in numbers {
iRes += item
}
println("\(iRes)")
}
TestMore(,,)
TestMore(,,,,)
4:函数类型:由函数参数类型与顺序以及函数返回值类型
func(iAge:Int, strName:String)->String
{
return "KO"
}
//该函数类型可以记为:(Int, String)->String
在 swift 中您可以像任何其他类型一样的使用函数类型。例如,你可以定义一个常量或变量 为一个函数类型,并为变量指定一个对应函数
func AddTwoInts(a: Int, b: Int) -> Int {
return a + b
}
var AddFunction:(Int, Int)->Int = AddTwoInts
这样你可以用AddFuncton调用方法,其实有点类似与AddFunction是函数AddTwoInts的名字变量
var iRes = AddFunction(1, 4)
同其他变量一样,它还支持类型推断
let AnotherMathFunction = AddTwoInts
var iOther = AnotherMathFunction(5, 6)
函数类型可以作为函数参数使用
func PrintMathResult(MathFunction: (Int, Int) -> Int, a: Int, b: Int)
{
. println("Result: \(MathFunction(a, b))") . }
. PrintMathResult(AddTwoInts, , )
函数类型也可以作为返回类型
func FunctionTest(a:Int, b:Int)->(Int, Int) -> Int{
}
Swift 函数的更多相关文章
- Swift函数编程之Map、Filter、Reduce
在Swift语言中使用Map.Filter.Reduce对Array.Dictionary等集合类型(collection type)进行操作可能对一部分人来说还不是那么的习惯.对于没有接触过函数式编 ...
- 如何在C语言中调用Swift函数
在Apple官方的<Using Swift with Cocoa and Objectgive-C>一书中详细地介绍了如何在Objective-C中使用Swift的类以及如何在Swift中 ...
- swift函数的用法,及其嵌套实例
import Foundation //swift函数的使用 func sayHello(name userName:String ,age:Int)->String{ return " ...
- Swift函数
函数 函数 介绍 // func // 在Swift中,一个个的方法就是函数 // 1.定义函数的关键字是func // 在定义函数的时候,不管有没有参数都加括号,参数写在括号中 // 在定义函数时, ...
- 4 .Swift函数|闭包
在编程中,我们常把能完成某一特定功能的一组代码,并且带有名字标记类型叫做函数,在C语言中,我们知道函数名就是一个指针,它指向了函数体内代码区的第一行代码的地址,在swift中也具有同样的功效. 在Sw ...
- Swift函数|闭包
在编程中,我们常把能完成某一特定功能的一组代码,并且带有名字标记类型叫做函数,在C语言中,我们知道函数名就是一个指针,它指向了函数体内代码区的第一行代码的地址,在swift中也具有同样的功效. 在Sw ...
- Swift函数的定义建议
/* Swift中函数命名的智慧 */ // 1.一般情况下, 我们写一个函数是这么写的 func sayHello(name: String , greeting: String) { print( ...
- Swift 函数和类
函数: func sayHello(personName:String,z:Int)->{ return "hello"+personName+z } print(sayHe ...
- Swift函数柯里化(Currying)简谈
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 下面简单说说Swift语言中的函数柯里化.简单的说就是把接收多 ...
随机推荐
- .NET跨平台:再见dnx,你好dotnet cli
昨天在github上dnx的一个issue中看到这样一段话: we're retiring dnx/dnu/dnvm toolchain and will move to dotnet CLI in ...
- SqlServer=>MySql
原文:http://www.cnblogs.com/andrew-blog/archive/2011/12/03/SQL_mss2sql.html#3242272 工具:http://files.cn ...
- Wix 安装部署(二)自定义安装界面和行为
上一篇介绍了如何联合MSBuild来自动生成打包文件和对WIX的一些初步认识,http://www.cnblogs.com/stoneniqiu/p/3355086.html . 这篇会在上篇的基础上 ...
- Linux: shell常用通配符
字符 含义 * 匹配 0 或多个字符 ? 匹配任意一个字符 [list] 匹配 list 中的任意单一字符 [!list] 匹配 除list 中的任意单一字符以外的字符 [c1-c2] 匹配 c1-c ...
- Excel Interactive View - 让页面表格的功能更强大
MS Office Excel Services提供了一个非常强大的功能,允许你只需要在页面上添加非常少量的JS references,就可以让你在页面上将表格的内容以Excel图表的方式呈现.这里是 ...
- Linux kernel develop -- Hello World
hello.c: #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h&g ...
- Atitit.html css 浏览器原理理论概论导论attilax总结
Atitit.html css 浏览器原理理论概论导论attilax总结 1.1. 浏览器是怎样工作的:渲染引擎,HTML解析(连载二)1 2. 5.1.1 DOM标准 1011 3. <We ...
- atitit.提升备份文件复制速度(1) -----分析统计问题and解决方案
atitit.) -----分析统计问题and解决方案 1. 现在的情形 1 2. 硬盘信息 大概50mb/s, 50iops 1 3. 统计小的文件比率 2 4. 复制速度估计.. 2 5. 小文件 ...
- windows必备,命令行工具cmder
下载cmder并安装! 64位可下,亲测: http://www.wmzhe.com/soft-31133.html 创建文件夹并进入文件夹命令: mkdir web-server && ...
- 利用同一 ASP.NET 的多个代码框架
2012 年,Microsoft 推出了两个添加到 ASP.NET 工具包的新框架:Web API 和 SignalR. 这两个框架为开发环境带来独特的开发方式,每个框架都有自身的独特之处: Web ...