在Ruby中,有没有一种方法可以替换'if'语句来使代码更具可读性?
if Environ == :windows
puts 'windows'
else
if Environ == :linux
puts 'linux'
else
puts 'other environment'
end
end
我想用诸如以下的块替换上面的内容:
windows{
puts 'windows'
}
linux{
puts 'linux'
others{
puts 'other environment'
}
}
答案 0 :(得分:2)
您可以定义一个接受块的函数,但是将other
嵌套在linux
内是没有意义的(也是不可能的)。
def windows
yield if Environ == :windows
end
def linux
yield if Environ == :linux
end
def other
yield if Environ != :windows && Environ != :linux
end
windows {
puts 'windows'
}
linux {
puts 'linux'
}
other {
puts 'other'
}
在这种情况下,更好的解决方案可能是简单的case
语句:
case Environ
when :windows then puts "windows"
when :linux then puts "linux"
else puts "other"
end