Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby数组按变量中的值排序_Ruby - Fatal编程技术网

Ruby数组按变量中的值排序

Ruby数组按变量中的值排序,ruby,Ruby,我想按变量中的键对Ruby数组进行排序,但我不知道如何排序 处境 my_arr.sort_by {|record| [record.year]} 将按记录的年份排序。但我想按作者、标签等进行排序,这种排序类型存储在一个变量中,就像字符串一样。所以我需要像这样评估过滤器 my_arr.sort_by {|record| [record."something_in_the_var"]} 当然,我有固定的过滤器。但仍在思考如何正确地做到这一点 感谢您提供的提示您可以使用 sort_by_this

我想按变量中的键对Ruby数组进行排序,但我不知道如何排序

处境

my_arr.sort_by {|record| [record.year]}
将按记录的年份排序。但我想按作者、标签等进行排序,这种排序类型存储在一个变量中,就像字符串一样。所以我需要像这样评估过滤器

my_arr.sort_by {|record| [record."something_in_the_var"]}
当然,我有固定的过滤器。但仍在思考如何正确地做到这一点


感谢您提供的提示

您可以使用

sort_by_this = "label"

my_arr.sort_by {|record| [record[sort_by_this]]}

你可以用像

sort_by_this = "label"

my_arr.sort_by {|record| [record[sort_by_this]]}

这就是
send
的作用

str = "label"
arr.sort_by{|rec| rec.send(str) }

是在BasicObject上定义的,所以每个对象都有它。

这就是
send
的作用

str = "label"
arr.sort_by{|rec| rec.send(str) }

是在BasicObject上定义的,所以每个对象都有它。

我尝试了这个,得到了
NoMethodError:undefined方法
[]。`:(我尝试了这个,得到了
NoMethodError:undefined方法
[]`:(