【发布时间】:2017-07-14 08:54:36
【问题描述】:
在 ruby 2.4 中:
x = ['a']
y = {}
x[0] = y[x[0]] = y.fetch(x[0], y.length)
puts y #=> {"a"=>0}
在 python 3.5 中:
x = ['a']
y = {}
x[0] = y[x[0]] = y.get(x[0], len(y))
print(y) #=> {0: 0}
为什么会这样?
预计到达时间:
y[x[0]] = x[0] = y.get(x[0], len(y))
产生预期的行为(让我很懊恼。)
【问题讨论】:
-
因为 Python 和 Ruby 是不同的语言? Python从左到右为一系列赋值目标赋值,Ruby从右到左。
-
@MartijnPieters 完全违反直觉的语义与编译器错误无法区分。
-
我发现赋值表达式令人厌恶,所以我们似乎陷入了僵局。选择其他语言?
-
请停止移动球门柱。如果您有后续问题,请发布新帖子。
-
尽管
x[0] = y[x[0]] = y.fetch(x[0], y.length)是有效的并且在Ruby 中产生了预期的 结果,你们写这样的代码吗?这是非常令人费解的......
标签: python ruby variable-assignment