下面給出之後的第二部分是從ActiveRecord的代碼片段:: Rails3中的基礎是&&真正需要
def columns
unless defined?(@columns) && @columns
@columns = connection.columns(table_name, "#{name} Columns")
@columns.each { |column| column.primary = column.name == primary_key }
end
@columns
end
我認爲,我們需要的是
unless defined?(@columns)
因爲@columns決不會假如它曾經設置過
但是,如果'@ columns'沒有被定義,或者它是'nil',那麼'defined?'會返回'nil',對吧? – Zabba 2010-11-18 07:47:17
@Zabba不,如果'@ columns'設置爲nil,'defined?'不會返回'nil',它會返回''instance-variable「'。 – 2010-11-18 16:27:24
嗯。看起來像tryruby.org導致錯誤信息輸出的問題。在覈磁共振檢查後刪除了我的答案。 – Zabba 2010-11-18 17:02:23