function

Страницы: 1
RSS
function
 
Подскажите пожалуйста  возможно ли в lua сделать так
Не знаю как правильно сформулировать вопрос :)
function main(и тут мы пишем что нам нужно)
С переменными и цифрами все понятно
Код
function main(bla)
   q = bla
   b = 5
   d = 10
   print(q+b+d)
end
main(5)
--20

А вот со знаками плюс,минус,умножить,разделить не понятно
Например у меня есть  две абсолютно одинаковые функции ,только в одной должны стаять все плюсы,а в другой все минусы
возможно ли обойтись одной функцией,не дублируя вторую
Код
function main(?)
   print(5+10+20)
end

function main(?)
   print(5-10-20)
end

function main(?)
   print(5-10+20)
end

main(?)
 
Цитата
Archie_ написал:
main(5)

Это уже не правильно. Нельзя так делать. Функция main должна быть только одна. И ее НЕ надо вызывать где либо в коде.
 
Цитата
Archie_ написал:
Код
   function   main (?)
    print ( 5  +  10  +  20 )
 end 

 function   main (?)
    print ( 5  -  10  -  20 )
 end 

 function   main (?)
    print ( 5  -  10  +  20 )
 end 

main(?)
  
Ну а в параметры вынести эти самые значения что мешает?
Код
function f(a, b, c)
    print(a+b+c)
end

f(5, 10, 20)
f(5, -10, -20)
f(5, -10, 20)
 
Цитата
Sergey Gorokhov написал:
Функция main должна быть только одна

Функция main: Это я так, для примера написал

Есть у меня Функция
function bla()
она находит и перемещяет  много предметов в перед ,то есть работает в плюс (функция достаточно большая)

далее в скрипте происходит кое что еще

И затем мне надо все переместить обратно,но не на тоже место , то есть эта же функция - только в минус
 
Цитата
Suntor написал:
Ну а в параметры вынести эти самые значения что мешает?
функция достаточно большая и перечислять надо очень много проще функцию продублировать и знаки поменять

короче понятно что так делать нельзя
 
Цитата
Archie_ написал:
функция достаточно большая и перечислять надо очень много проще функцию продублировать и знаки поменять
Сделайте объект с разными функциями и общими данными. Параметры, если их много, будут общими, а функции с разными действиями разные, соответственно... Можно через замыкание, таким способом:
Код
function new_f()
    local a, b, c = 5, 10, 20
    return {
        f1 = function () print(a+b+c) end,
        f2 = function () print(a-b-c) end,
        f3 = function () print(a-b+c) end
    }
end

local my_f = new_f()

my_f.f1()
my_f.f2()
my_f.f3()
Вывод:
Код
35
-25
15
Страницы: 1
Читают тему
Наверх