在Swift中可以将方法进行柯里化(Currying) ,也就是把接受多个参数的方法变换成接受第一个参数的方法,并且返回接受余下的参数并返回结果的新方法。举个例子,在Swift中我们可以这样写出多个括号的方法:
然后通过只传入第一个括号内的参数进行调用,这样将返回另一个方法:
或者:
柯里化是一种量产相似方法的好办法,可以通过柯里化一个方法模板来避免写出很多重复代码,也方便了今后维护。
举一个实际应用时的例子,在Selector一节(见第102页)中,我们提到了在Swift中Selector只能使用字符串生成。这面临一个很严重的问题,就是难以重构,并且无法在编译期间进行检查,其实这是十分危险的行为。但是target-action又是Cocoa中如此重要的一种设计模式,无论如何我们都想安全地使用,应该怎么办呢?一种可能的解决方式就是利用方法的柯里化。Ole Begemann在这篇帖子 里提到了一种很好的封装,这为我们如何借助柯里化,安全地改造和利用target-action提供了不少思路。