1. //
  2. // main.swift
  3. // FunctionTest-04
  4. //
  5.  
  6. import Foundation
  7.  
  8. println("函数測试!")
  9.  
  10. testFunction()
  1. //
  2. // FunctionTest.swift
  3. // FunctionTest-04
  4. //
  5.  
  6. import Foundation
  7. //函数以func开头 表示是一个函数
  8. //參数和參数以,
  9. //v1 表示參数:String 表示參数的类型
  10. // -> 表示返回值 String
  11. func testConcat(v1:String, v2:String)->String{
  12. return "\(v1) and \(v2)";
  13. }
  14.  
  15. //參数是0个。返回值是三个
  16. func getInfo()->(String,String,String){
  17. return ("欢迎","来到","百度");//是一个元祖
  18. }
  19.  
  20. //标签是oc的长处swift把oc里面的标签拿过来了
  21. func testConcat2(v1 :String, andValue v2 :String,andNumber v3 :Int)->String{
  22. return"\(v1) and \(v2) and \(v3)";
  23. }
  24.  
  25. func testFunctionInFunction()->Int
  26. {
  27. var y = 10;
  28. //add是一个函数 lua脚本语言
  29. func add(){
  30. //var y = 1;以下这个y会选择zui
  31. y += 5;
  32. }
  33. add();
  34. return y;
  35. }
  36. //这是一个函数 返回值是(Int->Int)
  37. func getFuncPointer()->(Int->Int){
  38. func addOne(num : Int)->Int
  39. {
  40. return num+1;
  41. }
  42. //这里返回一个函数的地址
  43. return addOne;
  44. }
  45.  
  46. func testFunction()
  47. {
  48. println("開始測试函数");
  49.  
  50. let v = testConcat("hello","world");
  51. println(" v is \(v)");
  52.  
  53. //andValue:称为一个标签
  54. let v2 = testConcat2("百度",andValue:"百度招聘",andNumber:100);
  55. println("v2 is \(v2)");
  56.  
  57. let(v3,v4,v5) = getInfo();
  58. println("v3\(v3) v4\(v4) v5\(v5)");
  59.  
  60. let v6 = testFunctionInFunction();
  61.  
  62. println("v6 is\(v6)");
  63.  
  64. //函数指针
  65. var funcPointer = getFuncPointer();
  66. var v7 = funcPointer(199);
  67. println("v7 is \(v7)");
  68.  
  69. //把函数地址/指针作为參数
  70. var arr = [20,10,333,4,43,33];
  71. var v8 = hasAnyMatch(arr,lessThanTen);
  72. }
  73.  
  74. func hasAnyMatch(list : [Int],condition:Int -> Bool) -> Bool
  75. {
  76. for item in list{
  77. if(condition(item))
  78. {
  79. return true;
  80. }
  81. }
  82. return false;
  83.  
  84. }
  85.  
  86. func lessThanTen(number :Int)->Bool{
  87. return number <= 10;
  88. }

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

  1. Swift 学习一函数&函数属性&懒加载

    函数 函数相当于OC中的方法 格式: func 函数名(参数列表) -> 返回值类型 {    代码块    return 返回值} func 函数名(参数列表){  // 返回值为Void 可 ...

  2. Swift 中函数使用指南

    关于Swift中的各种函数的使用的总结 前言 时间久了,好多东西我们就会慢慢忘记,在这里总结一下Swift中函数的使用原则,把大部分的函数使用技巧用代码示例来做了演示,但是如果想提高,还是要多多思考才 ...

  3. C语言中 指向函数的指针 简介

    引子:在学习CPrimerPlus的第十四章的14.13节中,遇到了如下三行文字,是有关指向函数的指针的,把我搞晕了. char * fump(); //返回指向char的指针的函数 char (* ...

  4. C语言 第八章 函数、指针与宏

    一.函数 函数是一个包含完成一定功能的执行代码段.我们可以把函数看成一个"黑盒子", 你只要将数据送进去就能得到结果, 而函数内部究竟是如何工作的的, 外部程序是不知道的.外部程序 ...

  5. 12-返回指针的函数&&指向函数的指针

    前言 接下来我只讲指针的最常见用法,比如这一章的内容----返回指针的函数 与 指向函数的指针   一.返回指针的函数 指针也是C语言中的一种数据类型,因此一个函数的返回值肯定可以是指针类型的. 返回 ...

  6. 《征服 C 指针》摘录4:函数 与 指针

    一.指向函数的指针 函数名可以在表达式中被解读成“指向函数的指针”,因此,正如代码清单 2-2 的实验那样,写成 func 就可以取得指向函数的指针. “指向函数的指针”本质上也是指针(地址),所以可 ...

  7. 【C语言】14-返回指针的函数与指向函数的指针

    前言 前面我们花了接近3个章节学习指针,应该都感受到指针的强大了吧.指针可以根据地址直接操作内存中的数据,使用得当的话,不仅能使代码量变少,还能优化内存管理.提升程序性能.关于指针的内容还非常多,比如 ...

  8. 指向函数的指针与iOS-Block相关知识

    指向函数的指针与iOS-Block相关知识 一. 函数指针的定义和调用: 关于函数指针的知识详细可参考:http://www.cnblogs.com/mjios/archive/2013/03/19/ ...

  9. Swift:函数和闭包

    函数 函数是一个完成独立任务的代码块,Swift中的函数不仅可以像C语言中的函数一样有函数的参数和返回值,而且还支持嵌套,并且有函数参数默认值.可变参数等. //定义一个函数,注意参数和返回值,如果没 ...

  10. C++ 必知必会:条款16 指向成员函数的指针并非指针

    这一点与指向成员的指针类似,其实现可能更加复杂,因为成员函数同时还存在虚拟函数,需要动态绑定执行动作.当然这种属性是属于函数本身的,此处表达的是指针不涉及函数的属性问题. 1: class shape ...

随机推荐

  1. UVA - 1471 Defense Lines 树状数组/二分

                                  Defense Lines After the last war devastated your country, you - as the ...

  2. TS3

    let [first, ...rest] = [1, 2, 3, 4]; console.log(first); // outputs 1 console.log(rest); // outputs ...

  3. Regexp-Utils:银行卡号Luhm校验

    ylbtech-Regexp-Utils:银行卡号Luhm校验 1.返回顶部 1.方法 //Description: 银行卡号Luhm校验 //Luhm校验规则:16位银行卡号(19位通用): // ...

  4. JVM源码分析之javaagent原理完全解读--转

    原文地址:http://www.infoq.com/cn/articles/javaagent-illustrated 概述 本文重点讲述javaagent的具体实现,因为它面向的是我们Java程序员 ...

  5. SQL Server 内存使用情况

    • 查看设置的最大与最小内存: exec sp_configure 'max server memory (MB)' exec sp_configure 'min server memory (MB) ...

  6. CLR - 设计类型

    前言 好记性不如烂“笔头”系列... 目录 类型基础 基元类型.引用类型和值类型 类型与成员 常量与字段 方法 类型基础 “运行时”要求每个类型最终都从System.Object 类型派生. 由于所有 ...

  7. Activity禁止截屏代码

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);

  8. JAVA实现两种方法反转单列表

    /** * @author luochengcheng * 定义一个单链表 */ class Node { //变量 private int record; //指向下一个对象 private Nod ...

  9. Unity 指定区域随机实例化预制体Prefab 代码

    using UnityEngine; public class NewBehaviourScript : MonoBehaviour { public GameObject prefab; void ...

  10. 云上建站快速入门:博客、论坛、CMS、电子商务网站统统搞定

    现在制作一个网站已经越来越容易了,只要知道清晰的流程之后都是可以很快的建好一个企业或者个人网站的!免费的建站程序很多,下面听哥给你亮出来,建站一般来说分主要有这四步:申请域名.申请虚拟主机.制作网页, ...