Nim でも同じかなと思って使ってみても思い通りに使えません
let value = {"foo":"bar"}
echo value["foo"]
echo value.foo
この echo はどちらもエラーです
エラーはアクセスのところなので {} の記法は構文エラーではないようです
チュートリアルなどドキュメントを検索しても基本的なところでは使われていないようで 唯一 set で使うというのがありました
ですが set は
let value = {"foo", "bar", "baz"}
という形式で少し違うものです
Dictionary で調べたほうが早いと思って探すと Nim では Table らしいです
作り方はこういうの
let table = to_table({"key": "value", "other": "things"})
to_table 関数を通すみたいです
じゃあ to_table に入れる前の {} だけは一体何なの?
検索してもそれらしいのがヒットしないので直接型を見てみました
import typetraits
let value = {"foo": 1, "bar": 2}
echo type(value)
# array[0..1, (string, int)]
タプルの配列になってるみたいです
let value2 = [("foo", 1), ("bar", 2)]
と同じということでしょうか
let value = {"foo": 1, "bar": 2}
let value2 = [("foo", 1), ("bar", 2)]
echo value == value2
# true
一致しました
この辺は Python とは違うみたいです
{} だけで Table を作成してくれたらいいのに
わかってから探すと意外と簡単にマニュアル中で見つかりました
https://nim-lang.org/docs/manual.html#statements-and-expressions-table-constructor
Table はよく使うデータ構造なので基本やチュートリアルのドキュメントで紹介しておいてほしいですね