момент? Речь всё ещё идёт о:
f(x, y = 1) -> x + y?
Чтобы можно было передать только x, а y сам подставился как 1, если его не указали?
Это же легко делается. При выполнении, в стек, вместе с вашим x кидается 1, если вы не указали другое, и дальше вызывается функция.
Ок, можно спросить, а что, если у нас тип для y сложный? К примеру, какой-нибудь User { Id, Name }? Как тогда это будет компилироваться? Поэтому в языках с дефолтными параметрами есть ограничение, что указанное дефолтное значение должно удовлетворять условию: может быть вычислено при компиляции.
Другой вопрос, что всё это не имеет смысла, без именованных параметров. Иначе вы рискуете запутаться в собственном коде. Что обязательное, а что нет.
Или вы о другом? Или вы о ...T?
Это называется дефолтными параметрами
> Иначе вы рискуете запутаться в собственном коде. Ну с такой логикой можно вообще все веселье убрать, например упрощенния а-ля алиас (*struct).attribute, или горутины, ведь это не очевидные вещи и в них можно запутаться))
Обсуждают сегодня