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