2014-11-22 56 views
0

我是ruby和rspec的初學者,我多麼喜歡學習ruby並試圖通過rspec框架進行測試。我不知道我在做什麼是正確的,如果有任何請求的話。如何在100和120代碼之間寫紅寶石素數?

我用紅寶石編寫了素數程序。在執行ruby時,我收到了一個我在下面指定的語法錯誤。我也想知道如何在rspec框架中使用這個素數。

錯誤:

$ruby main.rb 
main.rb:3: syntax error, unexpected tINTEGER, expecting ')' 
def find_prime(100,120) 
      ^
main.rb:3: warning: possibly useless use of a literal in void context 

100至120素數

def find_prime(100,120) 
    prime = [] 
while (100 <= 120) 
prime_flag = true 
i = 2 
while (i <= 100/2) 
    if 100%i == 0 
    prime_flag = false 
    break 
    end 
    i +=1 
end 
if prime_flag 
    prime << 100 
end 
100+=1 
end 
prime 
end 

回答

3

不能使用面值數字,如100120,作爲變量名。它混淆了Ruby解釋器。 Ruby沒有理解你的100爲「我先和要更改號碼」,它只是始終使用精確值100

首先,你的定義修改爲變量名在它的東西:

def find_prime(from_num, to_num) 

然後更改其他代碼行以匹配。然後,您需要在最後調用這個函數,用您要使用的值:

find_prime(100, 120) 

有可能是你的代碼的其他問題太多,但我會讓你弄清楚這些了(或者你可以問另一個問題)。上面解釋了Ruby爲問題中的代碼提供的錯誤消息。

+0

感謝ü尼爾。讓我更改變量名稱,將在最後調用該函數並執行。如果代碼存在任何其他問題,請更新。另外建議我如何在rspec框架上使用此代碼來測試。 – Arun 2014-11-22 16:43:09

+1

@阿倫:請問一個新的問題,如果這回答你的原始問題。不要將其編輯爲一個新的擴展問題。其他人可能最好回答你關於rspec的問題 - 你應該至少*開始*爲你的函數編寫一個測試,以幫助某人回答你的問題,瞭解你被困住的地方。如果你還沒有做過任何事情,可以看一下介紹,比如http://blog.teamtreehouse.com/an-introduction-to-rspec – 2014-11-22 16:45:17

+0

Sure Neil。讓我查看博客,並通過http://rspec.codeschool.com/levels/1 – Arun 2014-11-22 16:56:50

1

嘗試這樣的事情

def prime?(n) 
    [*2..n/2].none?{|i|(n % i).zero?} ? true : false 
end 

for i in 100..120 
    print i if prime?(i) 
end 
+0

來了解它。謝謝黑暗。 – Arun 2014-11-24 21:46:31

+0

你能幫我在rspec框架上使用相同的代碼來測試或提綱嗎? – Arun 2014-11-25 03:01:43