如果条件A(例如$(function () {
$(select).change(function () {
if(selectedOption.is(":disabled")){
$('#opacity').addClass('opacity');
} else if(selectedOption.is(":enabled")){
console.log("not"); // looking to removeClass('opacity');
}
});
});
)为!@object.nil?
,条件B在检查时会出现错误(例如false
),我经常遇到这种情况。
我在控制台中测试了它,但无法获得一些完整的数据。
1)如果第一个条件是@object.some_method -> undefined method 'some_method' for nil:NilClass
,第二个可能导致错误,使用and
/ &&
是否安全?
2)false
怎么样?
答案 0 :(得分:2)
!@object.nil? && @object.some_method
@object && @object.some_method
以上两者都是Ruby中的有效模式。您将不会获得“未定义的nil方法”错误,因为如果&&
左侧的表达式求值为nil
(或false
,则永远不会评估if
右侧的表达式})。
您还可以使用postfix unless
或@object.some_method if @object
:
@object.some_method unless @object.nil?
或
or
都是有效的选择。
关于||
:
使用or
(Rubyists通常避免使用关键字||
运算符)不会保护您免受错误的影响,因为当nil
左侧的表达式求值为{{1 ,解释器实际上将继续并尝试评估右侧的表达式。
答案 1 :(得分:1)
这些行的第二部分永远不会被执行:
false && raise "this will never be raised"
true || raise "this will never be raised"
在您的情况下,如果您正在使用有效支持,则可以执行以下操作:
@object.try!(:some_method)