Предисловие

Стало интересно, как реализована главная функция в Crystal.

Типа как в Python:

1
2
if __name__ == '__main__':
main()

Прочитал документацию, разобрался и делюсь информацией с тобой.

Объясняю

Программа на Crystal представляет собой глобальный объект, в котором можно определять типы, методы и локальные переменные файла.

В Crystal нет необходимости в явных выражениях return.

Например:

1
2
3
4
5
def add(x, y)
x + y
end

puts add(48, 56)

Однако возможность предусмотрена, лол:

1
2
3
4
5
6
7
def even?(num)
if num % 2 == 0
return true
end

return false
end

Код пишется прямо в исходном файле и нет необходимости размещать его в main функции.

1
2
$ cat test.cr
puts "Hello Crystal!"

Код даже может находится внутри объявления класса

1
2
3
4
5
6
7
8
$ crystal run abc.cr
15
$ cat abc.cr
class Test
x = 12

puts x + 4
end

Итог

Судя по проектам на GitHub, посоны используют class <НАЗВАНИЕ-ФАЙЛА/ПРОГРАММЫ/ETC> как главную (main) функцию и соотвутствующе оформляют код.