lambda中的参数数量错误

时间:2012-12-28 15:36:35

标签: ruby sinatra rack

在我的sinatra应用程序中,我有

的代码
haml :"page123", locals:
      {
        items: (my_data.sort ->(item1, item2){ item2[:date] <=> item1[:date]}), 
      }, 
      layout: need_layout?

我需要做的是按date顺序按descending对my_data进行排序。但是,我在这里收到错误

wrong number of arguments(1 for 0)

我做错了什么?

1 个答案:

答案 0 :(得分:3)

Enumerable#sort不接受任何争论。您实际上是将Lambda对象作为sort方法的第一个也是唯一的参数传递。您可以做的是提供一个用于对集合进行排序的块。

wrong number of arguments(1 for 0)表示该方法已获得1参数且预期为0

试试这个:

my_data.sort{ |a, b| b[:date] <=> a[:date] }