SHARE
TWEET

Untitled

a guest Oct 16th, 2019 64 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ----------------------------------------------------
  2. -- 2. Функции
  3. ----------------------------------------------------
  4.  
  5. function fib(n)
  6.   if n < 2 then return 1 end
  7.   return fib(n - 2) + fib(n - 1)
  8. end
  9.  
  10. -- закрытые и безымянные функции тоже допустимы
  11. function adder(x)
  12.   -- Возвращаемая функция создаётся когда вызывается adder
  13.   -- и запоминает значение x:
  14.   return function (y) return x + y end
  15. end
  16. a1 = adder(9)
  17. a2 = adder(36)
  18. print(a1(16))  --> 25
  19. print(a2(64))  --> 100
  20.  
  21. -- Функции можно возвращать, вызывать и передавать
  22. -- со списками, которые могут не совпадать по длине
  23. -- Несовпадающие полученные параметры обнуляются
  24. -- Несовпадающие переданные - отбрасываются
  25.  
  26. x, y, z = 1, 2, 3, 4
  27. -- Сейчас x = 1, y = 2, z = 3, а 4 отброшено
  28.  
  29. function bar(a, b, c)
  30.   print(a, b, c)
  31.   return 4, 8, 15, 16, 23, 42
  32. end
  33.  
  34. x, y = bar('zaphod')  --> напечатает "zaphod  nil nil"
  35. -- Теперь x = 4, y = 8, а значения 15..42 отброшены
  36.  
  37. -- Функции могут быть локальными и глобальными
  38. -- Следующие выражения равнозначны:
  39. function f(x) return x * x end
  40. f = function (x) return x * x end
  41.  
  42. -- Также как и:
  43. local function g(x) return math.sin(x) end
  44. local g; g  = function (x) return math.sin(x) end
  45.  
  46. -- Кстати, тригонометрические функции работают с радианами
  47.  
  48. -- Вызывать однострочные параметры можно и без скобок
  49. print 'hello'  -- Работает!
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top