J新手在这里。
动词 right ]
给出了返回赋值结果的平均值。我猜想x =: 1
的值是1,然后传递给]
,它返回正确参数的值(或者可能是]
,它使赋值有一个值)。
] x =: 1
1
x
1
但是不适用于 left [
。这是为什么 ?我认为将x =: 1
放在[
的左侧就足够了。两者有什么区别?
x =: 1 [
|syntax error
| x=: 1[
此外,当我们评估下面的表达式时,控制台上没有反馈,分配已静默进行。为什么会这样?
x =: i.10 [ n =: 2
x
0 1 2 3 4 5 6 7 8 9
n
2
答案 0 :(得分:3)
一元应用(即仅带有正确的参数)时,[
和]
都是动词Same,它的参数不变。
x =: 1 [
出现语法错误的原因是,您试图仅用一个左参数对[
进行二分法(即有两个参数)求值。
最后一个示例中的输出与求值顺序有关-在J中,此过程从右到左发生。
这意味着x =: i.10 [ n =: 2
与x =: (i. (10 [ (n =: 2)))
相同,其评估如下:
n =: 2
,即n
被赋值为2,然后在下一个动词中使用结果10 [ n
,即10个左 n
,仅10个i.10
,即0 1 2 3 4 5 6 7 8 9
x =: 0 1 2 3 4 5 6 7 8 9
没有任何内容打印到控制台上,因为最后一个动作是分配。
在这里,您可以使用[
或]
(通常)来打印除分配(即
] x=: i.10 [ n =: 2
0 1 2 3 4 5 6 7 8 9