2013-08-28 51 views
2

我在尝试制作命令行应用程序。 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。

+0

感谢您的回复。 “HERE”实际上是什么? – hrsetyono

+1

为了让你的代码不那么“杂乱”,你可以简单地定义引用多行文本的常量。一种方法是将文本括起来,如'MGS_1 =%{'和'}'。另一种是使用“这里的文件”。您可以通过将文本括入“MSG_1 =”INSTRUCTIONS_1“和”INSTRUCTIONS_1“之类的文字来实现。然后,您只需在代码中添加“将MSG_1”。 –

+0

@CarySwoveland谢谢,你的评论和vgoff的结合是我想要的 – hrsetyono

回答

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的字符串结束。

+0

谢谢!这正是我想要的 – hrsetyono

2
def help 
    puts \ 
    "Welcome to my app"\ 
    "..."\ 
    "..."\ 
    "..."\ 
    "..."\ 
    "..." 
end 
+0

谢谢你的回答,但由于过多的'\'和'''仍然看起来很混乱。vgoff的回答是我想要的。 – hrsetyono

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"] 
+0

谢谢,但由于'\ n'和多个'“' – hrsetyono