6

我在看似乎起源于 4chan 的愚蠢/可爱/出色的“睡眠类型”。对一个整数数组进行排序,这个想法大致是

    
    @array 中的 foreach elt
        产生线程(elt)

线程(n)在哪里

    睡觉
    打印 n

因此较小的值会更早打印。

有一个 Perl6 实现

@foo = @foo>>.&sleep;

我得到 >> 'hypers'操作员,并且这假设hypering是自动并行化的。但是这.&让我很困惑。

谁能解释一下?

谢谢

4

1 回答 1

10

如果你有一个函数yourfunc,那么你可以用 & 号获取对它的引用,&yourfunc。该语法$obj.$function$function使用一个参数调用,$obj. 所以一个人也可以写$function($obj)——除了这种语法不允许使用超级。

但是提出这个“实施”的人在三个方面是错误的:

  • 超级运算符允许编译器生成多个线程来执行每个方法,它不必一次为所有方法生成一个线程 - 所以“随机排序”不能工作
  • 超级运算符可以随机化方法的执行顺序,但它必须保留顺序或返回的项目 - 因此@foo根本不会排序,即使第一点不适用。
  • sleep() 应该返回睡眠的秒数,而不是参数。如果有人在计算过程中将计算机设置为睡眠状态,则结果可能会大得多。
于 2011-06-22T20:47:13.477 回答