Функции - это значения
Для объяснения я воспользуюсь более простым примером:
Допустим, у нас есть функция func
вроде этой:
local func = function() return "REEEEE" end
Мы можно назначить эту функцию новой переменной, например,
local func2 = func
Теперь func2
будет ссылкой на ту же функцию, что и func
, поэтому мы можем вызвать func2()
, и он вернет "REEEEE" .
Когда вы вызываете print(Closures)
, вы не выполняете Closures
, вы просто передаете саму функцию print
, поэтому он вызывает tostring
функции и записывает результат в stdout.
Когда вы назначаете Closures
bruh
, это означает, что btuh
теперь содержит ту же функцию, что и Closures
, и его вызов вернет внутреннюю функцию. Но попробуйте следующее:
bruh = Closures
print(bruh()())
Это должно напечатать 1
, потому что вызов bruh
возвращает функцию, а вызов, который затем возвращает число.