I am experimenting with named tuples to store my parameters for code readability. I have noticed that although one can create a tuple with one element, it cannot be accessed via the dot notation:
a = (b=3)
ERROR: type Int64 has no field b
 getproperty(::Int64, ::Symbol) at ./Base.jl:33
On the other hand, a tuple with two elements:
a = (b=3, c=4)
handles perfectly fine:
3 as expected.
Is this expected behavior? What is the rationale? In general, I might wish to store parameters in a named tuple (perhaps a named array in the future), and at times, there might only be a single parameter.
The syntax for tuple creation requires at least one comma, otherwise the parantheses are just used for precedence:
To expand on this answer:
julia> a = (b=3)
julia> a = (b=3,)
(b = 3,)
I was taught (in Python, but it applies here too) to think of the comma as the tuple operator, not the parentheses. I’ve found that lesson helpful in cases like this.
Thank you all! Regarding use of the comma:
a = 3,
does not work as intended. One has to use
a = (3,)
But that is hardly an issue.
You need both, otherwise how would you distinguish between
a = (3,)
(a = 3,)
For tuples you can write
tuple(3) if you think the comma is too subtle, it’s a pity that
tuple(a = 3) doesn’t make a named tuple.