采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
柯里化有什么意义呢?该传的参数一个没少啊,而且括号变多了,反而不容易理解。
仔细想想为什么当年学数学的时候,会学 a + b = b + a,a + b + c = a + (b + c) 这些定律。
就像你说的,该传的参数一个都没少:显然,你定义了接口,不可能允许别人少传参数给你,也不可能希望这样吧。
柯里化是一种类似的变换,形式上的变换不会带来逻辑语义上的变化否则就不叫变换了。那么变换的意义在哪里?如果你定义了一个有10个参数的 api,那么这10个参数对于调用者来说可能有10个不同模块提供,那么调用者用柯里化就完全可以将你的api柯里化然后依次调用,逻辑上也清晰,A模块传递给 B 模块的是已经应用了 A 所输出的参数的 api 的版本,那么 B模块无需关心 A 的输出是什么,只需要拿着已经变换过的 api 继续执行自己的逻辑即可依次类推。
实际上,这一章的内容大多数 Android 或者 Java 开发者是不适应的,原因在于大家还是比较习惯传统的代码编写,定义个变量,调用方法,返回值,再调用。如果我们把代码的执行流程设计成有一个初始状态,经过一系列变换(函数调用)得到最终的结果,那么类似柯里化这样的变换就会很有用。
至于你说的不容易理解,我们刚刚学习微积分的时候看起来也一样觉得不容易理解~~正常现象啦
本来我也想问这个的, 现在明白了!!!
登录后可查看更多问答,登录/注册
Google I/O大会钦定Android一级开发语言,现在不学,等待何时
1.5k 3
1.2k 1
1.1k 15
1.4k 15
1.6k 14