是否有比使用自定义案例语句更好的功能性方法来用Ruby编写此方法?
|
想象以下代码:
class SimpleLetter
def values
(\"a\" .. \"z\").to_a
end
def ===(other)
values.include?(other)
end
end
class Vowel < SimpleLetter
def values
[\"a\",\"e\",\"i\",\"o\",\"u\"]
end
end
class Consonant < SimpleLetter
def values
super - Vowel.new.values
end
end
objects = (\"a\" .. \"f\").to_a + (1 .. 5).to_a
objects.each do |letter|
case letter
when Vowel.new
puts \"#{letter} it\'s a vowel\"
when Consonant.new
puts \"#{letter} it\'s a consonant\"
else
puts \"#{letter} it\'s something else\"
end
end
我可以选择其他任何类,我只是以它们为例。我非常喜欢Scala的ѭ1和提取器,我认为这可能是在Ruby中编写相同内容的好方法。有没有一种更好的方式编写上面的代码而不必实例化新对象,这样我就可以调用它们的===
方法?
只是为了避免不必要的帖子,是的,我知道我可以这样做:
case letter
when [\"a\",\"e\",\"i\",\"o\",\"u\"].include?(letter)
# ...
end
没有找到相关结果
已邀请:
5 个回复
骨乏唯瓜
膛嵌墒缅欠
盛梯獭八搽
也适用于积木:
呕蹿尉
应该是单个字母,而不是整个字母。 尽管进行猴子修补有点冒险,但我还是会半心半意地执行以下操作:
辽躺
陈述的有趣游戏:
输出:
多字符和字符文字仅在1.9中有效。