Gus*_*ram 2 ruby ruby-on-rails
这是:
def x?
return @x if @x.present?
@x = #boolean calculation
end
Run Code Online (Sandbox Code Playgroud)
等于布尔值@x?
def x?
@x ||= #boolean calculation
end
Run Code Online (Sandbox Code Playgroud)
您不应该使用任何一个选项来存储boolean值,因为如果@x是则两者都会重新计算false。
present?是一种特殊的铁轨检查等于!blank?和false.blank? #=> true,但即使这不是一个布尔检查present?和||不相等。对于实现empty?空白的对象而言,存在的东西empty?也blank?因此而不是present?。
"".present? #=> false
"" || true #=> ""
[].present? #=> false
[] || true #=> []
false.present? #=> false
false || true #=> true
Run Code Online (Sandbox Code Playgroud)
@x ||= some_logic等同于@x = @x || some_logic显然如果@x为假some_logic将触发的位置。
如果您只想查看是否@x已确定是一个值(例如not nil),则可以将其替换为
def x?
return @x unless @x.nil?
@x = some_logic
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |