带有追加 (<<) 运算符和匹配项的三元运算符
Ternary operator with append (<<) operator and match
所以我有下面这行代码:
palinwords.select do |x|
x =~ /^[aeiou]/ ? testhash[:vcv] << x : testhash[:cvc] << x
end
我觉得有一种方法可以加强这个操作,这样追加就不会明确地写在冒号的两边。我发现很难描述我的意思,所以这里有一个涉及 puts
而不是 <<
:
的例子
我拥有的类似于 x == 5 ? puts y : puts z
我想要的更像 puts (x == 5) ? y : z
我完全有可能遗漏了某些东西或完全错误地考虑了这个问题,所以如果我尝试做的事情不可能实现,那也没关系。
像这样:
palinwords.each{ |x| testhash[(x =~ /^[aeiou]/ ? :vcv : :cvc)] << x }
要拆分所有回文,您可以使用 group_by
。
palinwords.group_by { |x| x =~ /^[aeiou]/ ? :vcv : :cvc }
还有一种方法可以做到这一点:
testhash[:vcv], testhash[:cvc] = palinwords.partition { |x| x =~ /^[aeiou]/ }
所以我有下面这行代码:
palinwords.select do |x|
x =~ /^[aeiou]/ ? testhash[:vcv] << x : testhash[:cvc] << x
end
我觉得有一种方法可以加强这个操作,这样追加就不会明确地写在冒号的两边。我发现很难描述我的意思,所以这里有一个涉及 puts
而不是 <<
:
我拥有的类似于 x == 5 ? puts y : puts z
我想要的更像 puts (x == 5) ? y : z
我完全有可能遗漏了某些东西或完全错误地考虑了这个问题,所以如果我尝试做的事情不可能实现,那也没关系。
像这样:
palinwords.each{ |x| testhash[(x =~ /^[aeiou]/ ? :vcv : :cvc)] << x }
要拆分所有回文,您可以使用 group_by
。
palinwords.group_by { |x| x =~ /^[aeiou]/ ? :vcv : :cvc }
还有一种方法可以做到这一点:
testhash[:vcv], testhash[:cvc] = palinwords.partition { |x| x =~ /^[aeiou]/ }