昨晚我已经阅读了Groovy中的curry()
方法,我感觉到函数式编程的感觉,使用了这个curry()
方法。
作为Groovy语言的新手,Groovy中有没有像curry()
方法那样提供函数式编程功能的方法?
如果用简单的例子解释这些方法,那将会很好。提前谢谢。
答案 0 :(得分:4)
def plus2 = { it + 2 }
def times3 = { it * 3 }
def composed1 = plus2 << times3
assert composed1(3) == 11
您可以使用方法引用运算符&
来获取对类方法的引用,然后可以将其用于currying或composition。
即:
def parseIntRef = Integer.&parseInt
def binaryParse = parseIntRef.rcurry( 2 )
def hexParse = parseIntRef.rcurry( 16 )
assert binaryParse( '110' ) == 6
assert hexParse( '0A' ) == 10
闭包有3种curry
形式;
curry
method开始从最左边的参数rcurry
method,它开始讨论右边的参数ncurry
从您指定的索引处开始。如果您按照以下链接在文档中详细描述了所有这三种咖喱方法: - )