问题描述
在学习Raku时,我到达了高阶函数和排序函数的位置。
我有这个例子:
> sort <4 6 2 9 1 5 11>
(1 2 4 5 6 9 11)
然后例程的文档中说:
Sorts the list,smallest element first. By default infix:<cmp> is used for
comparing list elements.
第9.2节我要关注的书"Piensa en raku"比较了数字排序和字典排序。
我尝试了以下操作:
> sort &le,<4 6 2 9 1 5 11>;
===SORRY!=== Error while compiling:
Undeclared routine:
le used at line 1. Did you mean 'lc'?
但是出现此问题,而不是按字典顺序排序的列表。因此,对于我来说理解这可能还为时过早,但是应该可以像函数一样在Raku中传递一个运算符,因为文档也指出它正在使用中缀:或者我需要执行以下操作,也许我m令人困惑的运算符和子例程:
sub my-le($a,$b) {
$a le $b;
}
sort &my-le,<4 6 2 9 1 5 11>;
或者这个:
sort { $^b le $^a },<4 6 2 9 1 5 11>;
所以我有一个问题,即使用不同的infix运算符和一个子例程,也许有关此差异的问题是操作数的顺序会影响某些运算的结果。因此不能轻易将其作为函数,参数或变量使用
> sort { $^a le $^b },<4 6 2 9 1 5 11>
(9 6 5 4 2 11 1)
> sort { $^b le $^a },<4 6 2 9 1 5 11>
(1 11 2 4 5 6 9)
我希望我能解释我对这个问题的怀疑。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)