2014-07-12 126 views
-1

請參考下面未定義的方法錯誤:對象

require 'rubygems' 
require 'selenium-webdriver' 

findtrue = true 
count = 0 
while findtrue do 
    count+=1 
    if count 10 
    findtrue = false; 
    elsif puts count 
    end 
end 

的代碼,我得到一個錯誤

undefined method `count' for main:Object (NoMethodError) 

爲什麼我得到這個錯誤?任何需要添加的部分?

回答

1

錯誤是由行

if count 10 

這是由紅寶石讀造成是

if count(10) 

它試圖調用一個名爲0的方法,這不存在。

我猜你究竟想要做的是檢查,如果數等於10。對於您需要添加==標誌:

if count == 10 
2

代碼if count 10被翻譯爲方法調用:if count(10),您顯然沒有count方法。我想你想使用像if count == 10這樣的比較運算符。

編輯:你也應該改變elsifelse

if count == 10 
    findtrue = false 
else 
    puts count 
end 
0

你來自一個更traditionale程序語言看你的代碼中, Ruby可以做得更清楚更短,簡而言之就是Rubyish。

首先,需要 'RubyGems的' 是沒有必要的紅寶石> V1.9 而其餘的可以用這一行

9.times{|count|puts count} 

或其更長版本

9.times do |count| 
    puts count 
    # and do whatever else 
end 
+1

來完成...或'9.times(&method(:puts))' –

+0

謝謝大家的回答 – user2408070