6

我真的不知道为什么代码的输出:

State_Values = List[];
Print[Length[{}]]
Print[Length[State_Values]];

是 :

0 
2

无法提出任何理由。也许这很愚蠢,但我看不到。谢谢你。

4

1 回答 1

11

不傻,但你犯了一个微妙的错误。中的下划线State_Values将其变为 a Pattern,而不是 a List。您可以使用该功能找到这一点Head[]

stateValues = List[];
Length[stateValues]
Length[{}]

Out[11]= 0

Out[12]= 0

如您所见,这是正确的和预期的。但是,引入下划线,一切都会中断:

state_Values = List[];
Length[state_Values]
Head[state_Values]
Head[stateValues]

Out[16]= 2

Out[17]= Pattern

Out[18]= List

如果您使用的是 Mathematica 的 GUI 版本,则更容易查看它,因为它以Pattern不同的方式突出显示变量。

于 2012-06-29T16:54:19.083 回答