2013-07-01 70 views
0

我有一個名爲add_and_power.rb的文件,如下所示,並且希望在Sublime Text上運行它。如何在崇高文本上運行Ruby文件

def add_and_power a,b 
    (a+b)**(a+b) 
end 

puts "First number please? " 
input1 = gets 

puts "Second number please? " 
input2 = gets 

puts "The result is: ", add_and_power(input1.to_i, input2.to_i) 

我跑cmd+b,但它只是顯示,

First number please? 
Second number please? 
The result is: 
1 
[Finished in 0.9s] 

我想輸入23得到答案。我如何讓Sublime Text 2請求輸入並回復答案?

+1

* ST *上不可能編輯器無法運行此類代碼。使用'IRB'或*命令行*。 –

+2

使用Sublime Text 2可以這樣做,但它並不漂亮。使用它打開的控制檯並在那裏輸入,在編輯器中查看程序反饋。 Yech。請參閱下面的答案。但這是可能的。使用他們給您的REPL或更好,讓終端舒適。 – vgoff

+0

@Priti - 在ST2中完全可能,事實上SublimeREPL插件非常簡單 - 請參閱下面的答案。 – MattDMo

回答

1

當您需要從鍵盤輸入用戶信息時,可以運行程序,但不是很好。

當我這樣做時,我需要從運行Sublime時打開的終端輸入內容,同時也從編輯器底部的程序中讀取響應。

從控制檯/終端運行程序簡單易行。

所以,答案是,雖然有可能這樣做,但也有擔憂。您可能需要使用STDOUT.sync = trueSTDOUT.flush來幫助管理與操作系統的緩衝區,你有兩件事要看,而這樣做... y。

它可能不是您正在尋找的答案,但作爲開發人員,您應該可以從控制檯/終端輕鬆運行。

2

如果您想要在ST2內運行代碼,請查看插件,可通過獲取。您可以使用IRBpry,這是一個更強大的功能。您可以將其用作傳統的REPL(認爲Clojure或LISP),並且還可以通過選擇,行範圍或塊將代碼從一個選項卡轉移到另一個選項卡中的正在運行的REPL。

在我的一些測試中,pry REPL並沒有很好地處理通過gets的輸入,但我還沒有充分利用它。 YMMV - 編輯 -由於AGS在下面提到,在SublimeREPL Ruby中使用my_var = $stdin.gets進行交互輸入。

我強烈推薦SublimeREPL,因爲它是一個非常強大的工具,並且它是ST2中的獨立設備,所以您不必一直往前翻動終端,保存並重新加載程序。

+1

使用'$在SublimeREPL Ruby中使用stdin.gets而不是'gets'。 – AGS