uplus功能有用吗?

时间:2015-02-27 14:32:12

标签: matlab

这是关于uplusMATLAB函数的修辞问题,或其对应的运算符,一元加+

是否存在此运算符有用的情况?更好的是,是否需要这种操作员?

3 个答案:

答案 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种类。如果编写一个需要函数句柄输入的函数来指定要执行的操作,那么可能对于不执行任何操作非常有用。

最后,对于其他类,数字运算符可以是overloadeduplus函数可以在其他内置类中使用,甚至可以在自己编写的类中使用。