В Julia 1.0, как установить именованный кортеж только с одной парой ключ-значение?

Когда я бегу

t = (one = "one", two = 2) typeof(t)

в REPL я получаю

NamedTuple{(:one, :two),Tuple{String,Int64}}

но когда я бегу

t = (one = "one") typeof(t)

я получил String как тип.

Можно ли установить именованный кортеж только с одним именованным значением, чтобы я мог получить доступ, например, к t[1], а также к t.one и получить возвращенное "one"?

1 ответ

Решение

Поставить запятую, т.е.

julia> t = (one = "one",)
(one = "one",)

julia> typeof(t)
NamedTuple{(:one,),Tuple{String}}

Причина по которой t = (one = "one") не работает, потому что это эквивалентно t = one = "one", Таким образом, вы определяете две переменные со значением "один".

julia> t = (one = "one")
"one"

julia> typeof(t)
String

julia> typeof(one)
String
Другие вопросы по тегам