美文网首页
Swift 柯里化学习笔记

Swift 柯里化学习笔记

作者: 雨生_ | 来源:发表于2016-04-14 14:39 被阅读62次

最近在学习Swift里面的内容,买了大神王巍的《100个Swift开发必备的Tip》,第一篇就是讲解柯里化知识的,简单学习了一下,记录下学习的内容。
首先,提下概念,在这里我就引用大神的句子了

在Swift中可以将方法进行柯里化,也就是把接收多个参数的方法变换成接受第一个参数的方法,并且返回接收余下的参数,返回结果的新方法。

柯里化的语法中,是将原来一个括号包含多个参数的方法,改写成多个括号的方法,每个括号内写入你希望每次传进来的参数,使用方法时,按照顺序分别传入参数,写一个简单的例子吧

func addThree(num1:Int) (num2:Float) (num3:Double) ->Int{
           return num1 +Int(num2) +Int(num3)
}
let oneNum = addThree(10)
let twoNum = oneNum(2.5)
let result = twoNum(10.25)
print(result)

用playground写下这段代码后,右边的输出框内,显示的结果

  • oneNum的显示结果是Float->Double->Int,
  • twoNum的显示结果是Double->Int,
  • result显示的是输出结果22,


按照我个人的理解,每次输入一个数字之后,返回的就是一个方法,除非是所有参数都输入完毕,返回的才是结果(Int),就像我们OC中的[[class alloc]init],相当于执行了两个方法,并且顺序不可以改变,不可能先init在alloc。这里还有一个要注意的是,参数需要按照自己定义方法的参数顺序去输入,否则会报错。

最近的Xcode更新了最新版本,按照之前的语法输入柯里化的语法之后,给予了一个警告,提示我这种语法习惯将会在未来被取消掉。
官方给的介绍是这样的:

Curried function declaration syntax func foo(x: Int)(y: Int)
is of limited usefulness and creates a lot of language and implementation complexity. We should remove it.

意思是用法有局限性,实现过于复杂,将要删除。如果实在需要使用,官方给了一个替代方法。这里贴下代码:

func addThreeNum(num: Int)->(Float)->(Double) -> Int{
    return {
        (num2:Float)->(Double)->Int in
        return{
        (num3:Double)->Int in
            return num + Int(num2) + Int(num3)
        }
    }
}
let addOne = addThree(10)
let addTwo = addOne(num2: 1.2)
let addThree_result = addTwo(num3: 12.3)

官方链接

个人的理解暂且能写出来的就这么多,未完待遇,欢迎指正。

相关文章

  • Swift 进阶

    swift新元素 柯里化(Currying) Swift 里可以将方法进行柯里化(Currying),这是也就是把...

  • Swift 柯里化

    Swift 柯里化 前言:在Swift中,柯里化在业务层的使用比较少,本文旨在介绍基本的柯里化的基本概念和基本使用...

  • swift 柯里化

    swift 柯里化 柯里化 1、什么是柯里化? 柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一...

  • 《Swift 开发者必备 Tips》 阅读笔记(一)

    本编是Swifter - Swift 开发者必备 Tips 阅读笔记 一、柯里化(Currying), 百度百科 ...

  • Swift-27个关键字,助力开发(篇幅有点长)

    1、柯里化(Currying) Swift 里可以将方法进行柯里化 (Currying),也就是把接受多个参数的方...

  • swift Tips

    swift curried(柯里化) func greaterThan(comparor: Int)(input:...

  • swift 柯里化

    Swift 里可以将方法进行柯里化 (Currying),这是也就是把接受多个参数的方法进行一些变形,使其更加灵活...

  • Swift 柯里化学习笔记

    最近在学习Swift里面的内容,买了大神王巍的《100个Swift开发必备的Tip》,第一篇就是讲解柯里化知识的,...

  • swift学习试笔——函数

    swift函数柯里化: func bigThan(a:Int,b:Int) -> Bool { return a ...

  • 《Swift开发者必备Tips》 学习总结(一)

    柯里化 (Currying) Swift 可以将方法进行柯里化,即 把接受多个参数的方法进行一些变形,使其更加灵活...

网友评论

      本文标题:Swift 柯里化学习笔记

      本文链接:https://www.haomeiwen.com/subject/oreglttx.html