Swift中的实例方法--柯里化方法(Curried Functions)

Swift中的实例方法--柯里化方法(Curried Functions),第1张

概述Swift中的实例方法–柯里化方法(Curried Functions) 声明:本文为本人翻译自国外的一片文章,英文水平有限,还望大家不吝赐教(有一部分未翻译,待后续补上)。 Swift中的实例方法是一种把实例作为参数,并返回一个可以被应用到实例的函数。 在学习Swift特性的过程中,出乎我意料的是:Swift中的实例方法是把实例当成参数的柯里化方法。不知道柯里化方法是什么意思?戳这。 给一段原汁 Swift中的实例方法–柯里化方法(CurrIEd Functions)

声明:本文为本人翻译自国外的一片文章,英文水平有限,还望大家不吝赐教(有一部分未翻译,待后续补上)。

Swift中的实例方法是一种把实例作为参数,并返回一个可以被应用到实例的函数。

在学习Swift特性的过程中,出乎我意料的是:Swift中的实例方法是把实例当成参数的柯里化方法。不知道柯里化方法是什么意思?戳这。

给一段原汁原味的解释:

The basic IDea behind currying is that a function can be partially applIEd,meaning that some of its parameter values can be specifIEd (bound) before the function is called. Partial function application yIElds a new function.
示例

下面的实例代码描述了一个银行账户:

class BankAccount {    var balance : Double = 0.0    func deposit(amount : Double){        balance += amount    }}

创建BankAccount的一个实例并且用这个实例调用实例:

//方法一let account = BankAccount()account.deposit(100) // balance is Now 100

啊哈,如此简单,但是我们还可以这样调用。

//方法二let depositor = BankAcconut.depositdepositor(account)(100) // balance is Now 200

方法一和方法二的功能完全一样,让我们看看方法二究竟是怎样个执行流程。首先,我们声明了一个变量,并为它分配了一个方法。注意方法二中BankAccount.deposit后面没有小括号,所以在这里我们并没有调用方法(这将会产生错误,因为你不能以这种形式调用一个实例方法),只是对它的一个引用。和C语言中的指针很像。第二步是调用depositor所存储的方法,它的类型如下:

let depositor: BankAccount -> (Double) -> ()

换句话说,这个方法只有一个参数,一个BankAccount实例,并返回另一个方法。后面的这个方法接收一个Double类型的变量并直接return。在第二部分中你应该意识到实例方法deposit()的签名。

我希望你可以看到一个实例方法在Swift是一个简单类型的方法,以实例作为参数,并返回一个函数将被应用到实例。当然,我们也可以把这些放在一行,这使得类型方法和实例方法之间的关系更加清晰:

BankAccount.deposit(account)(100) //blance is Now 300

通过实例BankAccount.deposit(),被绑定到实例函数。在第二个步骤中,然后调用该函数与其他参数。很酷,不是吗?

总结

以上是内存溢出为你收集整理的Swift中的实例方法--柯里化方法(Curried Functions)全部内容,希望文章能够帮你解决Swift中的实例方法--柯里化方法(Curried Functions)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1080871.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存