Хабр Курсы для всех
РЕКЛАМА
Большая витрина: от крупнейших школ до частных авторов. Сравнивайте по цене, длительности, формату и выбирайте самый подходящий курс!
The language borrows heavily from (in order of impact): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.
Если кратко — производительность сопоставима с С/С++/Rust/Go.Производительность С/С++/Rust не сопоставима с производительностью Go, последняя сопоставима с таковой у Java/C#.
На момент старта функции переменная result всегда уже объявлена, так что попытка объявить её снова, например, с помощью var result, приведёт к затенению её обычной переменной с тем же именем. Переменная result всегда инициализируется значением по умолчанию для своего типа. Поэтому ссылочные типы данных будут иметь значение nil, так что их при необходимости придётся инициализировать вручную.Адище.
return "Вася", а можно — result = "Вася", итог один и тот же.result, т.е. значение по умолчанию для типа. Фичу явно скопипастили с Паскаля. :-)Как я понял, можно написать return «Вася», а можно — result = «Вася», итог один и тот же.В чём смысл этой конструкции тогда?
proc countup(a, b: int): resultA, resultB int =
resultA = a + b
resultB = a * b
proc test():tuple[x: string, y: int] =
result.x = "XXX"
result.y = 42
var (a, b) = test()
echo a
echo b
result — это то, что досталось от Delphi/Pascal. Хоть я и любил Delphi и Pascal в своё время, сейчас же мне кажется, что это не самые лучшие вещи, которые стоило брать в новый язык. Nim в плане философии для меня близок к Ruby — в языке есть 100500 (изощрённых) способов выстрелить себе и тому, кто будет поддерживать написанный код, в ногу.
Учебное пособие по Nim (часть 1)