我正试图找到一种方法将这一切放在一行:
if Servers.empty?
puts "Specify some servers in $@"
exit
end
我尝试了这个,但它不起作用
puts "Specify from servers in $@" and exit if Servers.empty?
我如何把这一切都放在一条线上?
答案 0 :(得分:3)
这样的事情应该有效:
2.0.0-p451 :010 > (puts "Specify from servers in $@"; puts "exit") if [].empty?
Specify from servers in $@
exit
VS
2.0.0-p451 :011 > (puts "Specify from servers in $@"; puts "exit") if ['a'].empty?
=> nil
所以在你的情况下你会做...
(puts "Specify from servers in $@"; exit) if Servers.empty?
答案 1 :(得分:3)
为什么不将它包装在方法中?
def exit_with(message)
puts message
exit
end
exit_with("Specify from servers in $@") if Servers.empty?
答案 2 :(得分:3)
可能的解决方案:
解决方案1
abort("Specify some servers in $@") if Servers.empty? # To STDERR
解决方案2
class NoServerFound < StandardError; end
raise NoServerFound, "Specify some servers in $@" if Servers.empty?
答案 3 :(得分:3)
puts
返回nil
,这是假的,这就是您的代码不起作用的原因。如果你想使用这个技巧,最好在这种情况下使用or
......
puts "Specify from servers in $@" or exit if Servers.empty?
答案 4 :(得分:1)
这是一个单行:
fail("Specify from servers in $@") if Servers.empty?
fail
就像是puts
和exit
的组合。默认情况下,它会引发RuntimeError
,但您可以选择任何错误或创建自己的错误。
答案 5 :(得分:0)
不适用于exit
,但在类似的情况下,我这样做:
exit puts "Specify from servers in $@" if Servers.empty?
我经常这样做的一个实际案例是:
return puts "something went wrong" if blah_blah