如何在 MATLAB 中调用短路逻辑运算符作为函数?

How to invoke short-circuit logical operators in MATLAB as a function?

MATLAB 运算符通常转换为函数形式,如下例所示:

现在请考虑运算符 && and ||.

各种文档 (1-doc for or, 2-doc for and, 3-the MATLAB Programming Fundamentals ebook) 对此没有任何说明,help andhelp orhelp relop 也没有说明。 这也没有帮助:profile('on','-detail','builtin').

我能说的是 | 似乎被重定向到 or() 从下面的例子来看:

>> 1 || [0,0]    
ans =    
     1

>> 1 | [0,0]    
ans =    
     1     1

>> or(1,[0,0])    
ans =    
     1     1

>> 1 && [0,0]
Operands to the || and && operators must be convertible to logical scalar values.

所以我的问题是:假设这是可能的 - 如何显式调用 &&|| 的底层函数?

(注:本题涉及"how"的方面,不是[​​=60=])

不能有实现底层功能的函数。假设有一个实现此运算符的函数 scor,然后调用 scor(true,B) 会在调用 scor 之前计算 B,但运算符不会计算 B

显然可以定义 scor scor=@(x,y)(x||y),但它会计算大写的 B

/关于使用函数句柄的注释,这可能是一种解决方法:

%not printing a:
true||fprintf('a')
%printing a:
scor=@(x,y)(x||y)
scor(true,fprintf('a'))
%not printing a:
scor(true,@()(fprintf('a')))