在代数中如果我使语句x + y = 3,我使用的变量将保存值为2和1或1和2.我知道编程中的赋值不是一回事,但我不得不想知道。如果我想表示一个量子奇怪的粒子的值,我希望我的变量同时具有两个值,并让它在一个或另一个之后解析。或者也许我只是在做梦?
是否可以说i = 3 or 2;
?
答案 0 :(得分:9)
这是针对Perl 6(联结)计划的功能之一,其语法应该类似于my $a = 1|2|3
;
如果实施,它将直观地工作,例如$a==1
与$a==2
同时为真。另外,例如,$a+1
会为您提供值2|3|4
。
此功能实际上在Perl5以及Perl6::Junction和Quantum::Superpositions模块中可用,但没有语法糖(通过'函数'all
和any
)。< / p>
至少为了比较(b < any(1,2,3)
),它也可以用Microsoft Cω实验语言获得,但是它没有在任何地方记录(我只是在我看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值。一个如果它在字符串上下文中使用,另一个如果它在数字上下文中使用。