Чтобы они инициализировались сами в какое-то значение? Нет. Но ты можешь хоть сколько угодно аргументов задать и просто в начале тела цикла сделать if arg1337 == nil then arg1337 = "your init value" end, не самое изящное решение, но других особо не предоставляется в чистой имплементации луёв
Да хоть все, другой вопрос, что обязательные нужно будет располагать вначале, тогда все "необязательные" будут nil, которые в свою очередь в начале функции можно назначать через somevar = somevar and somevar or default_value Либо как уже упомянули используй таблицу и например обязательные аргументы оставляй в параметрах функции, а необязательные внутри последнего параметра-таблицы.
А зачем local value print(value or 100) Если value = nil, то будет 100
Что зачем ? Зачем присваивать значение по умолчанию в случае неинициализированного параметра ? Ну как минимум потому, что если предполагается, что параметр может быть одновременно nil и совсем не использоваться, то в коде что-то не так. Тут скорее вопрос "Зачем ?" больше к вашему примеру относиться, т.к. вы приводите искусственный пример, я же привёл пример идиоматический и более того +- в контексте заданного вопроса, ибо возможность опускать параметры функции при её вызове идёт бок о бок с темой значений по умолчанию, если же параметры по умолчанию в данной задаче не требуются, то как уже сказал - с кодом скорее всего что-то не так.
Так чуть короче. somevar = somevar or default_value
ааа, теперь понял, я с тернарником попутал.
Обсуждают сегодня