有没有办法删除Ifs并改用函数

时间:2019-04-16 14:38:59

标签: ruby

在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'
    }
}

1 个答案:

答案 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