Как написать функцию, похожую на `echo` в Nim?

#nim-lang

#nim-lang

Вопрос:

Я пытаюсь написать оболочку для echo приведенного ниже кода, не работает, игровая площадка

 import sequtils, strutils, sugar

proc p*(args: varargs[typed, `
 #nim-lang

 #nim-lang

Вопрос:

Я пытаюсь написать оболочку для echo приведенного ниже кода, не работает, игровая площадка ]): void = echo args.map((v) => $v).join(" ")

Ошибка:

 /usercode/in.nim(3, 8) Error: invalid type: 'typed' in this context: 'proc (args: varargs[typed])' for proc
 

Ответ №1:

 import sequtils, strutils, sugar

proc p*(args: varargs[string, `
 #nim-lang

 #nim-lang

Вопрос:

Я пытаюсь написать оболочку для echo приведенного ниже кода, не работает, игровая площадка
 import sequtils, strutils, sugar

proc p*(args: varargs[typed, `
 #nim-lang

 #nim-lang

Вопрос:

Я пытаюсь написать оболочку для echo приведенного ниже кода, не работает, игровая площадка ]): void = echo args.map((v) => $v).join(" ")

Ошибка:

 /usercode/in.nim(3, 8) Error: invalid type: 'typed' in this context: 'proc (args: varargs[typed])' for proc
 

Ответ №1:


]): void =
echo args.join(" ")

varargs принимает тип для преобразования в качестве первого аргумента, поэтому ваш код почти правильный, но вам нужно заменить typed на string , и тогда вызов функции будет эквивалентен в p([$arg1, $arg2]) основном.

Пример Nim для varargs link

Комментарии:

1. Вы не упомянули, что echo можете принять varargs[typed] , потому что это магия компилятора.

2. поскольку преобразование в строку уже выполнено, varargs[string, $] вы также можете удалить map .