This line in base/namedtuples.jl looks like
:( NamedTuple{$names,$types}(($(vals...),)) )
and I am asking about the
($(vals...),)
part. The , and the outer ()s seemed redundant to me, but if I omit them, the expansion does not work. What am I missing, what’s their role here?
             
            
              
              
              
            
                
            
           
          
            
            
              Isn’t the comma just used to indicate a named tuple:
julia-1.0> x = (a = 1,)
(a = 1,)
julia-1.0> x = (a = 1)
1
(I’m still working out how these named tuples operate myself…)
             
            
              
              
              
            
            
           
          
            
              
                Liso
                
              
              
                  
                  
              3
              
             
            
              Not only named tuples but distinguish any tuples from expression in parenthesis (if there is one element).
julia> (1)
1                                                                                 
                                                                                  
julia> (1,)
(1,)   
             
            
              
              
              
            
            
           
          
            
            
              
This would generate an arbitrary length Tuple inside an Expr objtect from an array of values of any length.
julia> :(($([1,2,3]...),))
:((1, 2, 3))
julia> :($(Tuple([1,2,3])))
(1, 2, 3)
Apparently, if you do it differently, then it is converted into a Tuple not wrapped in Expr object…