Scala中的currying的好处
发布时间:2020-12-16 18:36:09 所属栏目:安全 来源:网络整理
导读:我想澄清有关 scala currying的好处.根据“ Scala第二版编程” – “currying一种用多个参数列表编写函数的方法.例如 def f(x:Int)(y:Int)是带有两个参数的curried函数 名单.通过传递多个参数来应用curried函数 列表,如:f(3)(4).但是,也可以写一部分 应用
我想澄清有关
scala currying的好处.根据“
Scala第二版编程” – “currying一种用多个参数列表编写函数的方法.例如
def f(x:Int)(y:Int)是带有两个参数的curried函数 名单.通过传递多个参数来应用curried函数 列表,如:f(3)(4).但是,也可以写一部分 应用curry函数,如f(3).“”c“ 与创建相关的一个好处是部分应用了这样的功能 def multiplyCurried(x: Int)(y: Int) = x * y def multiply2 = multiplyCurried(2) _ 但是我们也可以使用部分应用的函数而不用currying def multiplyCurried(x: Int,y: Int) def multiply2 = multiplyCurried(2,_) 你能举几个例子,currying会有什么好处吗? 解决方法
当您有隐式参数时,Curry函数变得非常有用.
以期货的地图功能为例: map[S](f: (T) ? S)(implicit executor: ExecutionContext): Future[S] 第二个参数是隐式的,这个定义允许你编写表达式 val f2 = f1.map(x => x) 当你在范围中有隐含值时. 咖喱有用的另一个地方是Scala代码中的常见模式,您希望将函数传递给方法(例如,它可能是回调函数). 以输入流的“贷款”模式为例,它允许您在不考虑正确关闭资源的情况下使用流 def withInputStream[T](opener: => InputStream)(f: InputStream => T): T = ... withInputStream(new InputStream("hello.txt")) { inputStream => readLines(inputStream) } 这种语法使代码在很多情况下更加清晰 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |