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语言中的函数柯里化.简单的说就是把接收多 ...
随机推荐
- Kali Linux Web 渗透测试视频教程—第十一课-扫描、sql注入、上传绕过
Kali Linux Web 渗透测试视频教程—第十一课-扫描.sql注入.上传绕过 文/玄魂 原文链接:http://www.xuanhun521.com/Blog/2014/10/25/kali- ...
- [异常] JLink Error: Could not find supported CPU core on JTAG chain J-Link连接不到stm32内核问题
>_<" 昨天晚上还好好的,今天早上调试的时候就不行了,下载程序的时候总是报J-Link连接不上,而且stm32似乎也死机了,led灯不闪烁,TFT屏也无显示. >_< ...
- bootstrap日期选择器-datetimepicker
地址:http://www.bootcss.com/p/bootstrap-datetimepicker/ 使用方法,html: <div class="input-append da ...
- JsRender实用教程(tag else使用、循环嵌套访问父级数据)
前言 JsRender是一款基于jQuery的JavaScript模版引擎,它具有如下特点: · 简单直观 · 功能强大 · 可扩展的 · 快如闪电 这些特性看起来很厉害,但几乎每个模版引擎, ...
- JPA oneToMany 级联更新
oneToMany 使用: 示例:Employee与Phone为例. 1.类定义如下: package com.vrvwh.wh01.domain; import javax.persistence. ...
- 算法练习26-xx
26.左旋转字符串(字符串) 题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部. 如把字符串abcdef左旋转2位得到字符串cdefab.请实现字符串左旋转的函数.要求时间对长 ...
- 在SecureCRT标签显示IP标题(转)
- ASP.net知识点
2 .列举ASP.NET 页面之间传递值的几种方式. 答: (1)QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中. 如果是传递一个或多个安全性要求不高或是结构简 ...
- Atitit. 单点登录sso 的解决方案 总结
Atitit. 单点登录sso 的解决方案 总结 1. 系统应用场景and SSO模式选型 2 2. 系统应用的原则与要求 2 2.1. 开发快速简单::绝大部分系统来说,开发快速简单为主 2 2. ...
- MyEclipse使用总结——在MyEclipse中设置jsp页面为默认utf-8编码
在MyEclispe中创建Jsp页面,Jsp页面的默认编码是“ISO-8859-1”,如下图所示: 在这种编码下编写中文是没有办法保存Jsp页面的,会出现如下的错误提示: 因此可以设置Jsp默认的编码 ...