变量可以有多个值

时间:2008-11-20 07:42:01

标签: variables

在代数中如果我使语句x + y = 3,我使用的变量将保存值为2和1或1和2.我知道编程中的赋值不是一回事,但我不得不想知道。如果我想表示一个量子奇怪的粒子的值,我希望我的变量同时具有两个值,并让它在一个或另一个之后解析。或者也许我只是在做梦?

是否可以说i = 3 or 2;

8 个答案:

答案 0 :(得分:9)

这是针对Perl 6(联结)计划的功能之一,其语法应该类似于my $a = 1|2|3;

如果实施,它将直观地工作,例如$a==1$a==2同时为真。另外,例如,$a+1会为您提供值2|3|4

此功能实际上在Perl5以及Perl6::JunctionQuantum::Superpositions模块中可用,但没有语法糖(通过'函数'allany)。< / p>

至少为了比较(b < any(1,2,3)),它也可以用Microsoft 实验语言获得,但是它没有在任何地方记录(我只是在我看Cω时尝试过它并且它只是起作用)

答案 1 :(得分:7)

你不能用本机类型来做这件事,但没有什么可以阻止你创建一个变量对象(假设你使用的是OO语言),它有一系列的值甚至是概率密度函数而不是实际值。

您还需要定义变量与变量和本机标量之间的所有数学运算符。同等和赋值运算符也是如此。

numpy数组为矢量和矩阵做类似的事情。

答案 2 :(得分:2)

Damien Conways Quantum ::叠加可能会做你想要的,

https://metacpan.org/pod/Quantum::Superpositions

但是你可能需要你的裂缝管道。

答案 3 :(得分:2)

这也是你在Prolog中可以做的事情。您定义约束变量的规则,然后让Prolog解决它们......

需要一些时间来习惯它,但是一旦你知道如何使用它就很难解决某些问题......

答案 4 :(得分:1)

您所询问的似乎是如何实施Fuzzy Logic系统。这些已经存在了一段时间,你无疑可以很容易地为常用的编程语言选择一个库。

答案 5 :(得分:0)

您可以使用结构并手动处理操作。否则,变量一次只有1个值。

答案 6 :(得分:0)

变量只不过是内存中的地址。这意味着变量恰好描述了内存中的一个位置(长度取决于类型)。因此,只要我们没有“量子记忆”(我们没有它,并且它看起来不像我们将在不久的将来拥有它),答案就是 NO 。 如果你想编程和模拟这种行为,你的方法是使用一个数组(长度等于最多多个值的数量)。随之而来的是运行时间增加,因此必须对每个值进行计算(例如x + y,必须使用2个不同的值x1 + y1,x2 + y2,x1 + y2和x2 + y1进行计算)。

答案 7 :(得分:0)

在Perl中,你可以。 如果使用Scalar::Util,则可以使用var取2值。一个如果它在字符串上下文中使用,另一个如果它在数字上下文中使用。