16
我在玩Ruby,嘗試創建一個小型銀行賬戶程序。當我運行的運行withing的CREATE_ACCOUNT的代碼這一行:Ruby'is_a?'需要類或模塊(TypeError)
unless @response.is_a? Integer && @response.to_str.length == 4
puts "Your response must be 4 numbers in length."
create_account
else
@pin = @response
puts "Your pin has been set."
end
我得到這樣的迴應:
bank_account.rb:24:in 'is_a?':class or module required (TypeError)
from bank_account.rb:24:in 'create_account'
from bank_account.rb:47:in '<main>'
我不能確切地弄清楚是怎麼回事,但我包括我的代碼的其餘部分。這是不完整的,顯然是因爲我被困在這一部分。我經歷了一個while循環並輸入'Create Account'來啓動create_account方法。我的目標是運行條件,並要求用戶鍵入一個4位數的整數,就像任何ole針號碼一樣。如果它不是一個整數,也不是4位數字,我調用create_account方法讓它們重新開始。
我正在運行ruby 2.0.0,如果該信息是必要的,但我打賭它可能更多與我的代碼。 Stackoverflow對我來說是新的,所以我很抱歉如果這個問題已被問到。在提出問題之前,我試圖按照建議做功課,但我仍然難住。任何幫助表示讚賞。
我沒有意識到,如果我沒有專門將類放在括號中,那麼它就包含了條件的整個後半部分。謝謝。由於某種原因,我仍然無法接受長度爲四位的數字,但一次只能解決一個問題。 –
@MarkHJr,如果'@ response'實際上是一個'Integer',那麼你不能調用'to_str',只有'to_s'。當我在控制檯中使用值「454524」進行測試時,出現以下消息:'NoMethodError:undefined method'to_str'for 454524:Fixnum'。 – maurice
很好的回答和解釋!可能需要更長時間才能真正解決我的問題。 +1 –