Nimシーケンスで問題が発生しており、それらを関数から戻しています。私はちょうどメインからそれを呼び出す私のkey_list
Nimで戻り値としてseqを処理する方法
proc get_json_keys(json_data: JsonNode) : seq =
var key_list: seq[string] = @[] # 28
var key: string
for record in json_data:
for key, value in record:
if (not key_list.contains(key)):
key_list.add(key)
return key_list
を定義し
json_p.nim(42, 33) template/generic instantiation from here
json_p.nim(28, 22) Error: no generic parameters allowed for seq
ライン28です。
proc main() : void =
var file = get_url()
var json_data = file.parseFile()
[...]
var key_list = get_json_keys(json_data)
for key in key_list:
echo key
コードはmain関数内で正常に動作します。
これは、 'get_json_keys'の戻り値の型が' seq [string] 'ではなく' seq'であるためです。問題は 'seq'は型クラスであり、具体的な型ではないということです。戻り値の型を 'seq [string]'に置き換えると、問題はなくなります。 –
それは正しいです...私はNimに新しいです。エラーを完全に誤読 – wishi
あなたの責任ではない、エラーメッセージは非常に誤解を招く。私はテンプレート/ジェネリックインスタンシエーションの部分のためにそれに気付きました。これは、テンプレート、明示的な汎用パラメータを持つプロシージャ、または型クラスを使用するプロシージャを呼び出す場合にのみ発生します。 –