Ruby on rails 如何缩短一个'each do``提升,除非是'simple源代码?

Ruby on rails 如何缩短一个'each do``提升,除非是'simple源代码?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在使用Ruby on Rails 3.2.2,并试图缩短以下代码: custom_values.each do |custom_value| raise("Error!") unless AVAILABLE_CUSTOM_VALUES.include?(custom_value) end 有办法做到这一点吗?如果是这样,如何缩短(或改进)代码?就个人而言,我对您编写的代码没有问题,但您可以这样缩短代码: (custom_values - AVAILABLE_CUSTOM_VALUES)

我正在使用Ruby on Rails 3.2.2,并试图缩短以下代码:

custom_values.each do |custom_value|
  raise("Error!") unless AVAILABLE_CUSTOM_VALUES.include?(custom_value)
end

有办法做到这一点吗?如果是这样,如何缩短(或改进)代码?

就个人而言,我对您编写的代码没有问题,但您可以这样缩短代码:

(custom_values - AVAILABLE_CUSTOM_VALUES).empty? || raise('Error!')

就我个人而言,我对您编写的代码没有问题,但您可以这样缩短代码:

(custom_values - AVAILABLE_CUSTOM_VALUES).empty? || raise('Error!')

不是很短,但可能更优雅一点:

raise('Error!') unless custom_values.all? do |custom_value|                                                                                                      
  AVAILABLE_CUSTOM_VALUES.include?(custom_value)                                                                                                                 
end

不是很短,但可能更优雅一点:

raise('Error!') unless custom_values.all? do |custom_value|                                                                                                      
  AVAILABLE_CUSTOM_VALUES.include?(custom_value)                                                                                                                 
end

你为什么要把它再缩短一点?这看起来很简单,也很清楚。@Mitch Dempsey-现在我认为,出于未来可维护性的原因,最终缩短代码应该是一种“积极”的改进。缩短代码和提高代码的可维护性是完全不同的事情,而且常常是相反的。更短和更快也是不同的事情。@user12882 short!=可维护,可读==可维护。在这种情况下,我更喜欢集合“数学”,但不要弄错这两个。不要浪费时间进行过早的优化或担心过于简洁。为什么要将其进一步缩短?这看起来很简单,也很清楚。@Mitch Dempsey-现在我认为,出于未来可维护性的原因,最终缩短代码应该是一种“积极”的改进。缩短代码和提高代码的可维护性是完全不同的事情,而且常常是相反的。更短和更快也是不同的事情。@user12882 short!=可维护,可读==可维护。在这种情况下,我更喜欢集合“数学”,但不要把两者弄错。不要浪费时间进行过早的优化或担心过于简洁。