所以我有以下代码行:
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
我完全有可能错过某些东西或者认为这完全错了,所以如果我想要做的事情是不可能的,那就没问题了。
答案 0 :(得分:8)
要拆分所有可以使用的group_by
。
palinwords.group_by { |x| x =~ /^[aeiou]/ ? :vcv : :cvc }
答案 1 :(得分:5)
这样的事情:
palinwords.each{ |x| testhash[(x =~ /^[aeiou]/ ? :vcv : :cvc)] << x }
答案 2 :(得分:1)
以下是另一种方法:
testhash[:vcv], testhash[:cvc] = palinwords.partition { |x| x =~ /^[aeiou]/ }