2013-08-28 50 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