是否一直在迭代一个恒定的最佳实践?

在我的Ruby脚本中,我在方法之外声明一个常量:

SYNDICATIONS = %w(Advanced Syndication, Boxee feed, Player MRSS, iPad MRSS, iPhone MRSS, YouTube) 

并在以下方法中迭代它:

 def some_method SYNDICATIONS.each do |syndication| puts syndication end end 

迭代是不是一个好主意?

你没有迭代常量 – 你正在迭代一个数组,这恰好被一个常量引用。 常量本身只是一种不能重新分配的变量。 但是你不处理常量本身 – 你处理它引用的对象。

所以问题就变成了:迭代数组是否可以?

这个问题的明显答案是:是的。

迭代没有错。 但是,常量的定义存在错误。 %w运算符不会像你想象的那样工作。 它在空格上分割标记,而不是逗号。 如果您希望空间不是分隔符,则将其转义。 比较这三个例子,看看哪个最清楚。

 a1 = %w(Advanced Syndication, Boxee feed, Player MRSS, iPad MRSS, iPhone MRSS, YouTube) a1 # => ["Advanced", "Syndication,", "Boxee", "feed,", "Player", "MRSS,", "iPad", "MRSS,", "iPhone", "MRSS,", "YouTube"] a2 = %w(Advanced\ Syndication Boxee\ feed Player\ MRSS iPad\ MRSS iPhone\ MRSS YouTube) a2 # => ["Advanced Syndication", "Boxee feed", "Player MRSS", "iPad MRSS", "iPhone MRSS", "YouTube"] a3 = ["Advanced Syndication", "Boxee feed", "Player MRSS", "iPad MRSS", "iPhone MRSS", "YouTube"] a3 # => ["Advanced Syndication", "Boxee feed", "Player MRSS", "iPad MRSS", "iPhone MRSS", "YouTube"] 

除了Sergio指出的%w的错误之外,代码也可以工作,但如果您拥有的特定代码是您尝试使用的代码,那么这不是一个好方法。 这会更好:

 def some_method puts SYNDICATIONS end