将控制台消息与代码分开

时间:2013-08-28 03:10:23

标签: ruby

我正在尝试制作命令行应用。 puts行使代码看起来很乱。例如,我有help命令,其中包含多个puts

def help()
    puts "Welcome to my app"
    puts "..."
    puts "..."
    puts "..."
    puts "..."
end

如果我将puts合并为一个,则输出将包含尾随空格

def help()
    puts "Welcome to my app
    ...
    ..."
end

# The output in the console will be like:
# Welcome to my app
#        ...
#        ...

将消息与代码分开的最佳方法是什么?我只能考虑使用变量来存储消息,但我相信有一种更好,更整洁的方式,如降价或使用txt。

3 个答案:

答案 0 :(得分:2)

对于您的要求,我认为您正在寻找STDLIB中的OptParser库。

它允许您构建命令行选项,以便为用户执行使用和命令行报告等操作。

但是,您可以使用help方法执行此操作:

def help
  <<-EOS.lines.each {|line| line.strip!}
  Welcome to my app
  ...
  ...
  EOS
end
puts help
puts "Thank you for using my app!"

这将显示如下。

Welcome to my app           
...                         
...                         
Thank you for using my app!

更新:我将EOF分隔符更改为EOS for End of String。

答案 1 :(得分:2)

def help
    puts \
    "Welcome to my app"\
    "..."\
    "..."\
    "..."\
    "..."\
    "..."
end

答案 2 :(得分:1)

在您的具体示例中,您可以在帮助功能

中进行操作
puts "Welcome to my app", "...\n"*3

如果你有很多这样的静态消息,你可以尝试在开头的某个地方使用哈希

messages = {"welcome" => "Welcome to my app\n" + "...\n"*3, 
           "thanks" => "Thank you for the action"}

然后你可以访问它们

puts messages["welcome"]