如何将Swift中的多参函数转化成Curring函数

假设我们有一个含有多个参数的函数,用于构建一个人的基本信息:

func buildInfoWithName(name: String,#age: Int,#gender: String,#address: String,#phone: String) -> String {

    return "My name is " + name
        +  ",I'm a " + gender
        +  ",I live in " + address
        +  ",my phone number is " + phone
}

let mike = buildInfoWithName("Mike",age: 20,gender: "boy",address: "Tokyo Japan",phone: "12345678")

如果我们不想一次性提供所有的参数,可以把它改造成Curring函数:

func buildInfoWithName(name: String)(age: Int)(gender: String)(address: String)(phone: String) -> String {

    return "My name is " + name
    +  ",I'm a " + gender
    +  ",I live in " + address
    +  ",my phone number is " + phone
}

let benson = buildInfoWithName("Benson")(age: 24)(gender: "boy")(address: "Chengdu Sichuan")(phone: "87654321")

我们把原始的函数已经分解成了接受单一参数的函数序列。

参考链接: http://justtesting.org/post/94325843216/what-is-currying-in-swift

时间: 2024-10-23 10:59:37

如何将Swift中的多参函数转化成Curring函数的相关文章

父类中存在有参构造函数时,子函数必须将其实现。

public static class A{ int a; public A(int c){ a=5; } } //可以看出父函数若存在有参的构造函数,子函数在继承的时候必须实现它. public static class B extends A{ public B(int c,int e) { super(c); // TODO Auto-generated constructor stub d=e; } int d; } 原文地址:http://blog.51cto.com/13682530

Swift 中的利刃,函数和闭包

input[type="date"].form-control,.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,input[type="time"].input-sm,.form-horizontal .form-group-sm input

浅谈swift中的函数类型和闭包

在讲swift的函数类型之前,我们先回忆一下我们以前学的定义一个swift的函数 func add(a: Int,b: Int) -> Int { return a + b } 好了, 我们开始我们函数类型的讲解 上面这个函数的类型是(Int ,Int)->Int 使用函数类型 我们都知道, 在swift中 , 函数类型就像其他数据类型一样,也就意味着我们可以给一个函数的常量或者是变量赋值 var f2: (Int,Int)-> Int = add f2(2,3) //结果为5 好了,接

Swift 中的高阶函数和函数嵌套

高阶函数 在Swift中,函数可做为"一等公民"的存在,也就意味着,我们可以和使用 int 以及 String 一样,将函数当做 参数.值.类型来使用. 其中,将函数当作一个参数和值来使用可见下: typealias addTwoInts = (Int,Int)->(Int) var funcType = addTwoInts.self func aAddb(a:Int,b:Int) -> Int { return a+b } func addFunc(_ add:addT

Swift 中的函数(下)

学习来自<极客学院:Swift中的函数> 工具:Xcode6.4 直接上基础的示例代码,多敲多体会就会有收获:百看不如一敲,一敲就会 1 import Foundation 2 3 /***********嵌套函数*************/ 4 func getMathFunc(#type: String) -> (Int) -> Int{ 5 func squre(num:Int) -> Int{ 6 return num*num 7 } 8 func cube(num:

Swift 中的函数(中)

学习来自<极客学院:Swift中的函数> 工具:Xcode6.4 直接上基础的示例代码,多敲多体会就会有收获:百看不如一敲,一敲就会 1 import Foundation 2 3 //函数 4 5 //1.多个返回值 6 func area(width: Double,height: Double) -> (Double,Double) 7 { 8 var b = width 9 var a = width * height 10 return (a,b) 11 } 12 printl

Swift 中的函数(上)

学习来自<极客学院:Swift中的字典> 工具:Xcode6.4 直接上基础的示例代码,多敲多体会就会有收获:百看不如一敲,一敲就会 1 import Foundation 2 3 //函数 4 /*1.定义函数的语法格式 5 func 函数名(形参列表) -> 返回值类型 { 6 //可执行语句组成的函数 7 } 8 */ 9 //定义和调用函数 10 func sayHello(personName: String) -> String{ 11 return "Hel

C#中的函数(二) 有参有返回值的函数

接上一篇 C#中的函数(-) 无参无返回值的函数 http://www.cnblogs.com/fzxiaoyi/p/8502613.html 这次研究下C#中的函数(二) 有参有返回值的函数 依然写一个小例子,用来测试 跟上一个例子差不多,区别就是MyFunction有二个参数a,b,返回二个数相加的值 F5调试运行,中断后转到反汇编 这里很明显看到不同了 这里就得讲到参数传递的方式,参数从左向右依次存入寄存器ecx edx 但是不同的编程语言有不同的传递参数的方式,有空再写一篇文章介绍下 要

Swift中关于集合计算的几种函数记录(intersect、symmetricDifference、union、subtract)

很久之前用过一次,后来就忘了...扎心,现在记录一下 PS:这几种函数其实不限于swift内的,在JavaScript.python.DB等其他语言,应该也有类似用法,这里我只简单讲了在swift内的用法. 一.概念介绍 intersection(_ :) 创建一个只包含两个公共值的新集合.(交集) symmetricDifference(_ :) 创建一个新集合,其值集在两个集合中,但不能同时存在.(非交集) union(_ :) 创建一个包含两个集合中的所有值的新集合.(合集) subtra