朱莉娅意外的元组迭代?

时间:2018-03-09 18:28:44

标签: tuples iteration julia

我想迭代一个元组中的三元组,发现Julia中一个奇怪的逗号细节是我们应该期待的吗?

julia> for (k, n, d) in (("x1", "x2", "x3"),); @show k, n, d; end;
(k, n, d) = ("x1", "x2", "x3")    
# However if I remove , it doesn't work
julia> for (k, n, d) in (("x1", "x2", "x3")); @show k, n, d; end;
ERROR: BoundsError
Stacktrace:
[1] indexed_next(::String, ::Int64, ::Int64) at ./tuple.jl:56
[2] anonymous at ./<missing>:?

1 个答案:

答案 0 :(得分:5)

是的,这表现得如预期。仅括号不会创建元组。如果他们这样做,只需像2*(3+4)这样的基本数学表达式就行不通。不带逗号或分号的括号用于优先级分组或函数调用。这就是为什么你需要在一元组案例中使用明确的尾随逗号。

((x,y,z))(x,y,z)相同。 ((x,y,z),)构造一个包含(x,y,z)的单元组。