Методы
Методы в SLThree это очень гибкий инструмент.
Простейшее описание метода:
- f() => null;
Позволяет описать метод, который будет возвращать null
на любой вызов.
Модификаторы методов
У любого метода могут быть модификаторы. На данный (0.9-alpha) их список следующий:
- explicit — выключается неявное преобразование типов (позже об этом будет подробная статья)
- recursive — контекст метода будет пересоздаваться каждый раз при вызове метода, что позволяет пользоваться рекурсией
- native — метод будет скомпилирован в IL, а при первом вызове JIT-скопилирован. На данный момент возможностью компиляции покрыто лишь 10% от конструкций языка
- abstract — метод можно описать без тела, при вызове будет выдавать исключение.
Рекурсия (числа Фибоначчи):
- recursive fib(n) => n < 2 ? n : this.fib(n - 2) + this.fib(n - 1);
- using linq;
- linq.jts(linq.select(1..20, fib));
Использование абстрактных методов:
- context A {
- abstract f(x);
- g(x, y) => this.f(x) + y;
- }
- context B: A {
- f(x) => x * x;
- }
- B.g(10, 5);