簡體   English   中英

奇怪的錯誤數量的參數(1為0)錯誤?

[英]Weird wrong number of arguments (1 for 0) error?

我遇到了方法定義的問題。 我在“購買”模型中有這個代碼:

def update_amount newamount
    self.total_amount = self.total_amount +newamount
end

這個代碼在其他地方:

buy.update_amount(amount)

如果我運行該程序,我會收到此錯誤:

ArgumentError (wrong number of arguments (1 for 0)):
  app/models/buy.rb:18:in `update_amount'

現在,如果我為此改變(只是為了嘗試):

buy.update_amount

我收到此錯誤:

ArgumentError (wrong number of arguments (0 for 1)):
      app/models/buy.rb:18:in `update_amount'

我是Ruby on Rails的新手,所以它可能很簡單。

你有相當棘手的錯誤! 這條線:

self.total_amount = self.total_amount +newamount

被Ruby解釋為:

self.total_amount = self.total_amount(+newamount)

因此你得到了ArgumentError

Ruby lexer錯誤+newamount參數(即一元加上后跟newamount標識符),因為它知道total_amount是方法調用,而+后面沒有空格。 將該行寫為:

self.total_amount = self.total_amount + newamount

將解決問題。 或者更好的是,使用+=簡寫為@backpackerhh建議。

def update_amount(newamount)
  self.total_amount += newamount
end

這會將新金額添加到total_amount屬性的當前值。

您試圖將newamount作為參數傳遞給self.total_amount屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM