您好我想实现这个Common Lisp的宏用Ruby 2.0.0-P247:是否有可能通过函数使用关键字参数
(defmacro binary-cmp (a b &key (test-func '>))
`(funcall #',test-func ,a ,b))
二进制测试功能需要两个参数和1个关键字参数test_func
,而test_func
默认为gt
proc。
gt = -> (a, b) { a > b }
lt = -> (a, b) { a < b }
equal = -> (a, b) { a == b }
def binary_cmp (a, b, test_func: gt)
test_func.(a, b)
end
但是这是行不通的,因为在binary_cmp
无法看到外面的:gt
。
我该怎么做才能做到这一点?可能吗?或者有一个常见的做法呢?非常感谢你。
编辑:
为什么我需要的关键字参数的原因是我的参数列表中有5个参数,也许用户只需要默认的测试功能(比如lt
),或许有人想利用(gt
)作为默认值。
你使用Ruby 2.0吗? – Fred
是Ruby 2.0.0-p247 – juanitofatas