Ruby 每个带有索引的条件语句

Ruby 每个带有索引的条件语句,ruby,indexing,conditional-statements,Ruby,Indexing,Conditional Statements,我是一个编程新手,所以如果这比看起来更简单,我很抱歉。我四处搜索,只找到每个_的单独答案,带有_索引和条件,从来没有一起找到 我的目标是迭代一个数组,并根据索引执行单个操作。我的初稿看起来有点像这样: @word_array.each_with_index do |word, index| if index % 2 == 0 word = "EVEN" end end 这是可行的,但后来我想把它重构成一行。我的第一次尝试调用了一个错误,因为它预期了条件的else:部分: @wo

我是一个编程新手,所以如果这比看起来更简单,我很抱歉。我四处搜索,只找到每个_的单独答案,带有_索引和条件,从来没有一起找到

我的目标是迭代一个数组,并根据索引执行单个操作。我的初稿看起来有点像这样:

@word_array.each_with_index do |word, index|
  if index % 2 == 0
    word = "EVEN"
  end
end
这是可行的,但后来我想把它重构成一行。我的第一次尝试调用了一个错误,因为它预期了条件的else
部分:

@word_array.each_with_index { |word, index| index % 2 == 0 ? word = "EVEN" }
我曾尝试过这种方法,首先我想我可能会有一些运气,因为块不需要
else
条件,但显然没有效果。我确实发现我可以使用
nil
作为占位符,让代码正常工作:

@word_array.each_with_index { |word, index| index % 2 == 0 ? word = "EVEN" : nil }
然而,即使在进一步阅读了每一篇文章之后,我仍然不确定是否有
nil
可能会在更复杂的情况下造成麻烦,尽管它不会妨碍我在这里的基本示例

所以把它分解成两个问题:

1.
nil
以后会咬我屁股吗


2.)如果是这样的话,有没有一种方法可以使用一行代码来实现这一点,或者我的最佳选择是坚持使用条件块?

如果您想要这种单行代码样式:

word = 'EVEN' if index % 2 == 0
使用一个缺少条件的三元数会让人们想知道为什么一开始你不这么做。三元组是一种很好的分支方式,如:

(index % 2 == 0) ? 'EVEN' : word

如果您想要这种单衬里样式:

word = 'EVEN' if index % 2 == 0
使用一个缺少条件的三元数会让人们想知道为什么一开始你不这么做。三元组是一种很好的分支方式,如:

(index % 2 == 0) ? 'EVEN' : word
应该有用。三元运算符很容易混淆

1)奈尔会在我屁股上咬我吗

对。为什么不:

@word_array.each_with_index { |word, index| word = (index % 2 == 0) ? "EVEN" : "ODD" }
应该有用。三元运算符很容易混淆

1)奈尔会在我屁股上咬我吗

对。为什么不:

@word_array.each_with_index { |word, index| word = (index % 2 == 0) ? "EVEN" : "ODD" }

为什么不
索引%2==0和word='EVEN'
?三元
?…:用于A/B场景,而不仅仅是A。为什么不
索引%2==0和word='EVEN'
?三元
?…:适用于A/B场景,而不仅仅是A。第一个场景正是我想要的。非常感谢你!第一个正是我想要的。非常感谢你!