Matlab中是否有另一种and()方法,它不检查语法,一旦发现第一个false,就会返回false?
Matlab中是否有一种方便的Matlab中是否有另一种and()方法,它不检查语法,一旦发现第一个false,就会返回false?,matlab,Matlab,Matlab中是否有一种方便的和() 例如,我想 and(0,a), and(0,error()), 两者都返回false,而不是返回错误消息。一旦最早的输入参数返回false,我就不再使用后续的输入参数,我很乐意忽略语法错误。但Matlab不是 (对我来说,更可能的情况是前面输入的false案例涵盖了后面输入中的任何语法错误。) 有办法解决这个问题吗?如果我在varargin上使用(Matlab)循环编写和()的备选方案,该备选方案会更慢吗?使用&&运算符解决您的问题 0 &&
和()
例如,我想
and(0,a),
and(0,error()),
两者都返回false,而不是返回错误消息。一旦最早的输入参数返回false
,我就不再使用后续的输入参数,我很乐意忽略语法错误。但Matlab不是
(对我来说,更可能的情况是前面输入的false
案例涵盖了后面输入中的任何语法错误。)
有办法解决这个问题吗?如果我在varargin
上使用(Matlab)循环编写和()
的备选方案,该备选方案会更慢吗?使用&&运算符解决您的问题
0 && a
0 && error()
会回来的
ans =
logical
0
当然,即使a
未定义
注意:和()。中的不同答案和注释将更详细地解释。使用&&运算符可以解决您的问题
0 && a
0 && error()
会回来的
ans =
logical
0
当然,即使a
未定义
注意:和()。中的不同答案和注释将详细解释。MATLAB解释器(就像我遇到的任何其他解释器一样)在调用函数之前解析函数的所有输入参数。向函数传递求值参数的结果。因此,不可能让函数控制解析其输入参数
没有与短路逻辑AND功能相当的功能。函数和
相当于和
,不会短路。MATLAB解释器(就像我遇到的任何其他解释器一样)在调用函数之前解析函数的所有输入参数。向函数传递求值参数的结果。因此,不可能让函数控制解析其输入参数
没有与短路逻辑AND功能相当的功能。函数和相当于&
,并且不会短路。使用&
操作符。为什么不使用如果else
?@rahnema1:如果else
不能变成函数句柄
。只需使用普通函数,如果需要,您可以使用它的句柄。@rahnema1:除此之外。。对于&&
,&&
是否与和()
除了语法检查之外?使用&
运算符。如果else
,为什么不使用呢?@rahnema1:如果else
不能成为函数的句柄
。只需使用普通函数,如果需要的话,你可以使用它的句柄。@rahnema1:我在寻求替代方案。。对于&
,&
是否与和()?在语法方面使用&
是否有任何限制?和()
与&
相同,这是逻辑运算符&&
是一个带有短路的逻辑and运算符,这意味着它完全可以实现您想要的功能。它只在找到第一个false之前执行。与&
相比,没有语法限制。和()
与&
之间有什么区别吗?在语法方面使用&
是否有任何限制?和()
与&
相同,这是逻辑运算符&&
是一个带有短路的逻辑and运算符,这意味着它完全可以实现您想要的功能。它只在找到第一个false之前执行。与&
相比,没有语法限制。为什么解释器必须解析所有参数?@Argyll:好的,我想可能不是严格必要的。但是延迟评估肯定会导致更复杂的解释器,以及延迟和混淆错误消息。那么,错误消息是必要的原因吗?为什么它做的检查更少会更复杂?@Argyll:还有执行顺序的期望:如果函数有副作用,例如在屏幕上打印一些东西,你希望这些函数以什么顺序执行它们的任务fun(a(),b())
。是否按照表达式的顺序将函数作为嵌套表达式进行求值?从fun
的第一行开始,直到需要a
;当需要a
时,评估a()
,这可能还包括fun
。这难道不是函数式语言的自然现象吗?为什么解释器必须解析所有参数?@Argyll:好吧,我想可能不是严格必要的。但是延迟评估肯定会导致更复杂的解释器,以及延迟和混淆错误消息。那么,错误消息是必要的原因吗?为什么它做的检查更少会更复杂?@Argyll:还有执行顺序的期望:如果函数有副作用,例如在屏幕上打印一些东西,你希望这些函数以什么顺序执行它们的任务fun(a(),b())
。是否按照表达式的顺序将函数作为嵌套表达式进行求值?从fun
的第一行开始,直到需要a
;当需要a
时,评估a()
,这可能还包括fun
。这不是函数式语言的自然特征吗?