我有獲取文章和兩個日期的課程。我在類中的初始化方法如下所示:
def initialize(articles:, date1: nil, date2: nil)
@articles = articles
@date1 ||= DEFAULT_DATE1
@date2 ||= DEFAULT_DATE2
end
我不知道為什么我的 @date1 和 @date2 有 DEFAULT_DATE 值,即使我發送這樣的引數:
Example.new(articles: articles, date1: '2021-10-10', date2: '2021-10-11')
問題出在哪兒?
uj5u.com熱心網友回復:
您應該檢查收到的引數,然后進行相應的分配。
將代碼更改為此將起作用
def initialize(articles:, date1: nil, date2: nil)
@articles = articles
@date1 = date1 || DEFAULT_DATE1
@date2 = date2 || DEFAULT_DATE2
end
問題和解釋:
當你這樣做時
@date1 ||= DEFAULT_DATE1
它正在檢查是否@date1有任何值(它沒有)所以你被DEFAULT_DATE1分配給@date1
uj5u.com熱心網友回復:
問題出在哪兒?
您從不使用引數date1和date2。您可能希望將它們分配給它們各自的實體變數。
除非您有非常特殊的需求,否則將默認值直接移動到引數定義中會更容易:
def initialize(articles:, date1: DEFAULT_DATE1, date2: DEFAULT_DATE2)
@articles = articles
@date1 = date1
@date2 = date2
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/314932.html
下一篇:獲取具有Rails關系的專案
