Swift的函数与函数指针、闭包Closure等相关内容介绍

<span style="font-size:24px;">//函数
//demo1 无參数类型
func testConcat(){
    println("測试函数");
}

testConcat()//调用demo1

//demo2 多參数,一个返回值
/*
    函数以func开头,表示一个函数
    v1表示參数。String參数类型
    ->返回值类型String

*/
func testConcats(v1:String,v2:String) ->String{
    return "\(v1) and \(v2)";
}

//函数參数含有标签
func testConcatAndMark(v1:String,AndValue v2:String,AndNumber v3:String)->String{

    return "\(v1),\(v2),\(v3)"
}

//測试函数
func testFunction(){
    let v = testConcats("hello", "world");
    println(v);
    let v2 = testConcatAndMark("david", AndValue: "dream", AndNumber: "good");
    println(v2)
}

testFunction();

//函数返回多值
func getInfo()->(String,String,Int){
    return ("david","dream",100);
}

let (v1,v2,v3)=getInfo();
println("v1=\(v1),v2=\(v2),v3=\(v3)");

//函数嵌套函数
func testFunctionInFunction()->Int{
    var y = 10;
    func add(){
        y+=5;
    }
    add();
    return y;
}

let v6 = testFunctionInFunction();

//*******************************
//函数指针 *****五星难度
/*
    返回值是(Int->Int)。是个函数地址
    第一个int是參数类型,第二个int是返回值
*/
func getFuncPointer()->(Int->Int) {
    func addOne(num:Int)->Int{
        return num+1;
    }
    return addOne;//返回一个函数 地址
}

var funPointer = getFuncPointer();
//funPointer是个函数指针
var v7 = funPointer(100);//函数的形式调用

func get()->(Int->String){
    func post(count:Int)->String{
        if count>50{
            return "success";
        }else{
            return "failed"
        }
    }
    return post;
}

let v8 = get();//v8拿到的是get()函数的地址
let v9 = v8(58);//v9拿到的是get函数的返回值

//函数指针/地址作为參数,函数作为參数传给函数。函数的传递</span>
<span style="font-size:24px;">
</span>
<span style="font-size:24px;">//闭包是难点,闭包的作用主要是函数与函数之间的沟通,有点像Block</span>
<span style="font-size:24px;"></span><pre name="code" class="objc">//(num:Int)->Bool闭包參数类型
func hasColsureMatch(arr:Int[],value:Int,cb:(num:Int)->Bool){
    for item in arr{
        if cb(item){
            return true;
        }
    }
    return false;
}

var ar = [20,9.100,34,89,39];

var v1 = hasClosureMatch(arr,40,{
    (num:Int) -> Bool in
    return num >= 40;
});

println("v1 is \(v1)");
				
时间: 2024-10-20 06:37:01

Swift的函数与函数指针、闭包Closure等相关内容介绍的相关文章

Swift中使用typealias定义一个闭包closure

在OC中我们定义一个Blocks是这样定义的: typedef void (^ZWProgressHUDCompletionBlock)(); 在Swift中定义一个闭包是这样的: typealias ZWProgressHUDCompletionBlock=()->Void 转载请注明!!!欢迎大家加入交流群:爱疯.爱Coding:209476515 Swift中使用typealias定义一个闭包closure,布布扣,bubuko.com

swift学习笔记2——函数、闭包

阅读目录 函数 闭包 之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询用.详细可以参考the-swift-programming-language-in-chinese,或者苹果官方英文版文档 当前版本是swift2.2 函数 func sayHello(personName: String, alreadyGreeted: Bool) -> S

Swift中文教程(四)--函数与闭包

原文:Swift中文教程(四)--函数与闭包 Function 函数 Swift使用func关键字来声明变量,函数通过函数名加小括号内的参数列表来调用.使用->来区分参数名和返回值的类型: 1 func greet(name: String, day: String) -> String { 2 return "Hello \(name), today is \(day)." 3 } 4 greet("Bob", "Tuesday")

swift基础语法三(函数与闭包)

1 // Playground - noun: a place where people can play 2 3 import Cocoa 4 //函数和闭包 5 6 //函数,使用func关键字声明函数: 7 func greet(name:String, day:String) -> String { 8 return "Hello \(name), today is \(day)." 9 } 10 greet("Bob", "Tuesday&

php中的匿名函数和闭包(closure)

一:匿名函数 (在php5.3.0 或以上才能使用) php中的匿名函数(Anonymous functions), 也叫闭包函数(closures), 允许指定一个没有名称的函数.最常用的就是回调函数的参数值.(http://php.net/manual/zh/functions.anonymous.php) 匿名函数的定义: $closureFunc = function(){ .... }; eg: 把匿名函数赋值给变量,通过变量来调用 $closureFunc = function($s

闭包(Closure)和匿名函数(Anonymous function)/lambda表达式的区别

闭包(Closure)和匿名函数(Anonymous function)/lambda表达式的区别 函数最常见的形式是具名函数(named function): function foo(){ console.log("named function") } foo() 不过也可以将函数视作数据赋值给变量,这样的函数可以没有名字: nameless = function(){ console.log("anonymouse function") } nameless(

内部函数能够访问外部函数的局部变量,这个特性是闭包(Closure)编程的基础

闭包:   内部函数能够访问外部函数的局部变量,这个特性是闭包(Closure)编程的基础 3. 将lambda函数作为其他函数的返回值,返回给调用者. 函数的返回值也可以是函数.例如return lambda x, y: x+y返回一个加法函数.这时,lambda函数实际上是定义在某个函数内部的函数,称之为嵌套函数,或者内部函数.对应的,将包含嵌套函数的函数称之为外部函数.内部函数能够访问外部函数的局部变量,这个特性是闭包(Closure)编程的基础, 原文地址:https://www.cnb

Swift语言精要-闭包(Closure)

闭包(Closure)这个概念如果没学过Swift的人应该也不会陌生. 学过Javascript的朋友应该知道,在Javascript中我们经常会讨论闭包,很多前端工程师的面试题也会问到什么是闭包. 那么,什么是闭包呢? 让我们看下在Javascript中闭包的解释: Closures are functions that have access to variables from another function’s scope. (This is often accomplished by

Swift具体解释之三----------函数(你想知道的都在这里)

函数(你想知道的都在这里) 注:本文为作者自己总结.过于基础的就不再赘述 ,都是亲自測试的结果.如有错误或者遗漏的地方.欢迎指正.一起学习. 1. 函数的简单定义和调用 简单的无參函数就不再赘述 , name为形參 .也是内部在数名 . func sayHello(name:String) ->String { return name+" say: hello" } 调用的时候也非常easy sayHello("zhangsan") 是不是非常easy呀! 2