【问题标题】:perl6 Passing operators as argumentsperl6 将运算符作为参数传递
【发布时间】:2018-03-27 06:48:49
【问题描述】:

我试图通过定义和传递原始运算符来实现一些类似于 Scheme 的功能。在 Scheme 中,您可以

(define x +) (x 1 2)

这个操作会给你答案 3。在 perl6 中,我不得不将操作符放在另一个函数中以达到相同的效果:

sub x($a) { $a * 2; }
sub y($m, $n) { $m($n); }
say y(&x, 3); # gives you 6
say y(+, 3) # this is error

有没有简单的方法来传递运算符和函数?

谢谢。

【问题讨论】:

    标签: parameters arguments operators raku


    【解决方案1】:

    我不做Scheme,但是

    (define x +)
    

    应该对应于类似的东西

    my constant &x = &infix:<+>;
    

    那么,

    say x(1,2)
    

    也会输出 3。

    如果您发现上面使用的规范名称太麻烦,还有一个速记符号 &amp;[+] 用于传递运算符。

    请注意,我不完全确定您尝试使用 Perl6 代码做什么,因为这看起来与 Scheme sn-p 大不相同。

    【讨论】:

    • 谢谢克里斯托夫! “常量”和“&[+]”对我来说都是新概念。我今天学到了一些东西!谢谢!!
    猜你喜欢
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    相关资源
    最近更新 更多