答案 0 :(得分:13)
没有必要,没有一元加号的语言不允许写+1
。显然你也可以写1
,但是在导入总是写+
或-
的数据时,它非常好。
在搜索某些源代码时,我发现了+
A=+A
取代了代码:
if ~isnumeric(A)
A=double(A);
end
它会将字符和逻辑转换为double,但所有数字数据类型都保持不变。
答案 1 :(得分:7)
在定义新的数字类型时非常有用。
假设您定义了四元数并重载uplus
:
classdef quaternion
...
end
然后在你的代码中你可以写:
x = quaternion(...);
y = [+x, -x];
z = +quaternion.Inf;
t = -quaternion.Inf;
如果您不能使用与其他数字相同的语法。
PS:问题"是否有用" (对某些语法来说是强制性的)......好吧,我找不到任何理由......但有时写作' + x'回读代码时更清楚。
答案 2 :(得分:4)
我不确定这是否完全构成"有用"或者如果它是最好的编程实践,但在某些情况下,出于对称/清晰的原因,可能希望使用unary +
。这可能是一个更好的例子,但我想到这样的事情:
A = [+1 -1 +1;
-1 +1 -1;
+1 -1 +1];
对于uplus
函数,它是数字运算的NOOP种类。如果编写一个需要函数句柄输入的函数来指定要执行的操作,那么可能对于不执行任何操作非常有用。
最后,对于其他类,数字运算符可以是overloaded。 uplus
函数可以在其他内置类中使用,甚至可以在自己编写的类中使用。