Почему я не могу вызвать Nim proc без фигурных скобок?
Nim поддерживает выражение вызова процедуры без фигурных скобок, но когда я использую именованные аргументы, он жалуется, почему?
proc doc(text: string) {.discardable.} = echo text
doc "doc1"
doc(text = "doc1")
doc text = "doc1" # <== Error here
2 ответа
Решение
Жалоба Error: undeclared identifier: 'text'
, потому что вы звоните doc
proc со значением, которое не объявлено. Это работает:
proc doc(text: string) = echo text
let text = "doc1"
doc text
Линия doc text = "doc1"
сообщает программе: 1) вызвать процедуру doc
с переменной text
в качестве первого аргумента и 2) присвоить "doc1" тому, что возвращает эта процедура. Итак, вы найдете ошибкуError: 'doc text' cannot be assigned to
.
proc doc(text: string = "") = echo text
doc text = "hello world"