Groovy中的函数式编程;除了咖喱法:?

Groovy中的函数式编程;除了咖喱法:?,groovy,Groovy,昨晚我读了Groovy中的curry()方法,通过使用这个curry()方法,我感受到了函数式编程的感觉 作为Groovy语言的新手,Groovy中有没有像curry()method那样提供函数式编程功能的方法 如果用一个简单的例子来解释这些方法,那就好了。提前谢谢。还有 闭包有3种形式的curry 从最左边的参数开始转换闭包参数的 然后是,它从右边开始转换参数 最后,从您指定的索引开始 如果您按照以下链接进行操作,文档中将对所有3种curry方法进行详细描述:-)@virtualeyes该页

昨晚我读了Groovy中的
curry()
方法,通过使用这个
curry()
方法,我感受到了函数式编程的感觉

作为Groovy语言的新手,Groovy中有没有像
curry()
method那样提供函数式编程功能的方法

如果用一个简单的例子来解释这些方法,那就好了。提前谢谢。

还有


闭包有3种形式的
curry

  • 从最左边的参数开始转换闭包参数的
  • 然后是,它从右边开始转换参数
  • 最后,从您指定的索引开始

  • 如果您按照以下链接进行操作,文档中将对所有3种curry方法进行详细描述:-)

    @virtualeyes该页面上次编辑是在2008年。我希望一些新的答案会更好。在第二个例子中,什么是
    rcurry
    ?我猜它是
    curry
    ,你把它拼错了。顺便说一句,当我运行这段代码时,我得到了一个错误。
    没有方法签名:java.lang.Integer.parseInt()适用于参数类型:(java.lang.Integer,java.lang.String)值:[2110]
    @ant添加了3种可能的curry方法的描述。。。在我的示例中,我必须使用
    rcurry
    ,因为
    radix
    参数是静态
    Integer.parseInt
    方法中最右边的参数。我还可以使用
    def binaryParse=parseIntRef.ncurry(1,2)
    将第二个参数设置为
    2
    ,但这(imho)更少pretty@ant不,我没有拼错,我是说
    rcurry
    。您看到的错误是因为您试图使用
    curry
    将最左边的参数(字符串)设置为整数value@tim:是的,我做错事了。。。。但是groovy1.7中是否提供了这个
    rcurry
    方法?因为如果我使用
    rcurry
    def plus2  = { it + 2 }
    def times3 = { it * 3 }
    
    def composed1 = plus2 << times3
    assert composed1(3) == 11
    
    def parseIntRef = Integer.&parseInt
    
    def binaryParse = parseIntRef.rcurry( 2 )
    def hexParse    = parseIntRef.rcurry( 16 )
    
    assert binaryParse( '110' ) == 6
    assert hexParse(    '0A'  ) == 10