Latest web development tutorials

функция Lua

В Lua, функция является основным методом абстрактных операторов и выражений. Оба они могут быть использованы, чтобы иметь дело с какой-то особой работы, он также может быть использован для вычисления некоторых значений.

Lua предоставляет множество встроенных функций, вы можете легко назвать их, например, функцию печати () могут быть переданы параметры печати на консоли в программе.

Функция Lua Существуют две основные цели:

  • 1. выполнить поставленную задачу, в данном случае используется в качестве операторе вызова функции;
  • 2. Вычислить и возвращает значение, в этом случае функция используется в качестве выражения присваивания.

определение функции

функции языка программирования Lua, определенные в следующем формате:

optional_function_scope function function_name( argument1, argument2, argument3..., argumentn)
	function_body
	return result_params_comma_separated
end

Разрешение:

  • optional_function_scope
  • Этот параметр является необязательным функция разработать глобальную функцию или локальную функцию, конец параметра не установлен в глобальной функции, если вам необходимо установить функцию является частичной функцией вам необходимо использовать ключевое слово местное.
  • function_name:
  • Укажите имя функции.
  • аргумент1, argument2, argument3 ..., argumentn :
  • Параметры функции, несколько параметров, разделенных запятыми, может также функционировать без параметров.
  • function_body:
  • Тело функции, утверждения функциональных блоков кода должны быть выполнены.
  • result_params_comma_separated:
  • возвращаемые значения функций, функция Lua язык может возвращать несколько значений, разделенных запятыми.

    примеров

    Следующий пример определяет функцию(макс), параметры num1, num2, используемый для сравнения размеров двух значений и возвращает максимальное значение:

    --[[ 函数返回两个值的最大值 --]]
    function max(num1, num2)
    
       if (num1 > num2) then
          result = num1;
       else
          result = num2;
       end
    
       return result; 
    end
    -- 调用函数
    print("两值比较最大值为 ",max(10,4))
    print("两值比较最大值为 ",max(5,6))
    

    Приведенный выше код выполняется в результате:

    两值比较最大值为 	10
    两值比较最大值为 	6
    

    Lua мы можем функционировать в качестве параметра, переданного функции, следующие примеры:

    myprint = function(param)
       print("这是打印函数 -   ##",param,"##")
    end
    
    function add(num1,num2,functionPrint)
       result = num1 + num2
       -- 调用传递的函数参数
       functionPrint(result)
    end
    myprint(10)
    -- myprint 函数作为参数传递
    add(2,5,myprint)
    

    Приведенный выше код выполняется в результате:

    这是打印函数 -   ##	10	##
    这是打印函数 -   ##	7	##
    

    Несколько возвращаемых значений

    Функция Lua может возвращать несколько значений результата, такие как string.find, который возвращает соответствующий строку "начало и конец подстрочный" (если нет строка матч возвращает не ноль).

    > s, e = string.find("www.w3big.com", "w3big") 
    > print(s, e)
    5	10
    

    Функция Lua, после возвращения стоит возвращать список списков может возвращать несколько значений, таких как:

    function maximum (a)
        local mi = 1             -- 最大值索引
        local m = a[mi]          -- 最大值
        for i,val in ipairs(a) do
           if val > m then
               mi = i
               m = val
           end
        end
        return m, mi
    end
    
    print(maximum({8,10,23,12,5}))
    

    Приведенный выше код выполняется в результате:

    23	3
    

    Переменный параметр

    Функция Lua может принимать переменное число аргументов, и языка C аналогично использованию списка параметров функции трехточечный (...) обозначает функцию с переменными параметрами.

    Параметры Lua функции в таблице называется Арг, #arg представляет число параметров , передаваемых.

    Например, мы вычислить среднее значение нескольких чисел:

    function average(...)
       result = 0
       local arg={...}
       for i,v in ipairs(arg) do
          result = result + v
       end
       print("总共传入 " .. #arg .. " 个数")
       return result/#arg
    end
    
    print("平均值为",average(10,5,3,4,5,6))
    

    Приведенный выше код выполняется в результате:

    总共传入 6 个数
    平均值为	5.5