swift -函数、函数指针

//
//  main.swift
//  FunctionTest-04
//

import Foundation

println("函数测试!")

testFunction()
//
//  FunctionTest.swift
//  FunctionTest-04
//

import Foundation
//函数以func开头 表示是一个函数
//参数和参数以,
//v1 表示参数:String 表示参数的类型
// -> 表示返回值 String
func testConcat(v1:String, v2:String)->String{
    return "\(v1) and \(v2)";
}

//参数是0个,返回值是三个
func getInfo()->(String,String,String){
    return ("欢迎","来到","百度");//是一个元祖
}

//标签是oc的优点swift把oc里面的标签拿过来了
func testConcat2(v1 :String, andValue v2 :String,andNumber v3 :Int)->String{
    return"\(v1) and \(v2) and \(v3)";
}

func testFunctionInFunction()->Int
{
    var y = 10;
    //add是一个函数 lua脚本语言
    func add(){
        //var y = 1;下面这个y会选择zui
        y += 5;
    }
    add();
    return y;
}
//这是一个函数 返回值是(Int->Int)
func getFuncPointer()->(Int->Int){
    func addOne(num : Int)->Int
    {
        return num+1;
    }
    //这里返回一个函数的地址
    return addOne;
}

func testFunction()
{
    println("开始测试函数");

    let v = testConcat("hello","world");
    println(" v is \(v)");

    //andValue:称为一个标签
    let v2 = testConcat2("百度",andValue:"百度招聘",andNumber:100);
    println("v2 is \(v2)");

    let(v3,v4,v5) = getInfo();
    println("v3\(v3) v4\(v4) v5\(v5)");

    let v6 = testFunctionInFunction();

    println("v6 is\(v6)");

    //函数指针
    var funcPointer = getFuncPointer();
    var v7 = funcPointer(199);
    println("v7 is \(v7)");

    //把函数地址/指针作为参数
    var arr = [20,10,333,4,43,33];
    var v8 = hasAnyMatch(arr,lessThanTen);
}

func hasAnyMatch(list : [Int],condition:Int -> Bool) -> Bool
{
    for item in list{
        if(condition(item))
        {
            return true;
        }
    }
        return false;

}

func lessThanTen(number :Int)->Bool{
    return number <= 10;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 10:27:57

swift -函数、函数指针的相关文章

类的成员函数的指针

前面一篇文章<函数的指针 >介绍了全局函数的指针,现在我们再来介绍一下成员函数的指针. 成员函数指针的定义: 一般形式 Return_Type (Class_Name::* pointer_name) (Argument_List); 用typedef简化的形式 Typedef Return_Type (Class_Name::* FuncPtr_Type) (Argument_List); FuncPtr_Type pFunc = NULL; //pFunc为成员函数指针的指针变量 成员函数

【C++】函数和指针

最近在看C++ primer plus,感觉函数与指针这一章难点比较多,记写笔记,加强理解. From C++ Primer Plus: Chapter 7 Function:C++ Programming Modules 1. 如何声明函数指针? 和函数原型类似: 需要声明指针指向函数的返回值和参数列表 double pam(int); //参数为int 类型,返回值为double 类型的函数 double (*pf);(int) //指向参数为int类型,返回值为double 类型的指针 p

成员函数指针和指向静态成员函数的指针

#include <iostream> using namespace std; class Student{ public:     Student(const string& name):m_name(name){}     void who(void){         cout << m_name << endl;     }     string m_name;     static int s_add(int a,int b){         re

类成员函数的指针与多态性

1 类成员函数的指针 2 类成员函数的指针数组 3 指向类成员函数的指针的指针 1 类成员函数的指针 auto func1 = &com::jia;//C++函数指针 int (com::*p)(int, int) = &com::jia;//C函数指针 1 #include <iostream> 2 3 class com 4 { 5 private: 6 int a; 7 int b; 8 public: 9 com(int x, int y) :a(x), b(y) 10

指针实现两数交换和指向函数的指针

指针就是地址,而指针变量就是存储地址的变量. 1.指针与函数 利用指针解决: C语言中函数的参数采用"单向传递",故第一个程序中改变形参不会改变实参,而在第二个程序中,使用指针变量作为参数,改变指针变量所指向的值,函数调用结束后,变量值被保留下来. 2.指向函数的指针的应用

函数和指针 C++

一.用函数指针变量调用函数. 指针变量也可以指向一个函数,一个函数在编译时被分配给一个入口地址.这个函数入口地址就称为函数的指针.可以用一个指针变量指向函数,然后通过该指针变量调用此函数. 定义指向函数的方法,格式是: int (*p)(int,int);     函数名代表函数入口地址,而max(a,b)则是函数调用. 二.返回指针值的函数 一个函数可以带回一个整数值.字符值.实型值等,也可以带回指针型的数据,即地址.其概念和以前类似,只是带回的值是指针类型而已.返回指针值的函数简称为指针函数

c++: 指向类成员函数的指针

指向函数的指针有和指向类成员函数的指针的有什么不同? int f(char a, float b);如果它是普通函数,则它的类型是 int (*)(char, float);如果它是非静态成员函数,则它的类型是 int(ClassName::*)(char, float);如果它是静态成员函数,则它的类型是和普通函数一样. 如何把一个类的成员函数传递给event handler, 线程启动函数等? 类的成员函数必须和一个类的实例结合起来才有意义.可以写一个函数来包装类的成员函数. class X

iOS指向函数的指针和block

  一:block基础知识 block基础知识 基本概念:block是用来保存一段代码的:^:是block得标志  好比*:是指针的标志 特点:1:保存一段代码: 2:可以有参数和返回值: 3:可以作为函数的参数传递: 与代码块的区别,代码块里的代码会自动执行,block中代码要手动调用: 二:普通数据类型.指向函数的指针.block的定义的类比 1:基本数据类型: 例如:int a = 10; 格式:数据类型  变量名 = 值: 2:指向函数的指针:可以仿照上边基本数据类型的定义 例如:voi

c 函数及指针学习 10

标准库函数 1算数运算stdlib.h 2随机数stdlib.h 3字符串转化stdlib.h 4数学函数 math.h 5日期和时间 time.h 6信号 signal.h 7打印可变参数列表stdarg.h 8断言 assert.h 抽象数据类型在数据结构中比较仔细 运行时环境没看 来自为知笔记(Wiz)c 函数及指针学习 10,码迷,mamicode.com

数组、函数和指针

一.数组和指针 数组名同时也是该数组首元素的地址.例如:flizny == &flizny[0] , flizny 和 &flizny[0]都代表首元素的内存地址,两者都是常量: 指针+1的结果就是对该指针增加一个存储单元,对于数组而言,地址会增加到下一元素的地址,而不是下一个字节. 可以用以下等式表示: dates + 2 == &date[2] // 相同的地址 *(dates + 2) == dates[2] //相同的值 二.函数和指针 由于数组名就是数组首元素的地址,所以