mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2025-08-30 18:10:20 +02:00
Translate 3 part
This commit is contained in:
@@ -138,7 +138,7 @@ local g = function(x) return math.sin(x) end
|
|||||||
local g; g = function (x) return math.sin(x) end
|
local g; g = function (x) return math.sin(x) end
|
||||||
-- 'local g' будет прототипом функции.
|
-- 'local g' будет прототипом функции.
|
||||||
|
|
||||||
-- Trig funcs work in radians, by the way.
|
-- Так же тригонометрические функции работсют с радианами.
|
||||||
|
|
||||||
-- Вызов функции с одним текстовым параметром не требует круглых скобок:
|
-- Вызов функции с одним текстовым параметром не требует круглых скобок:
|
||||||
print 'hello' -- Работает без ошибок.
|
print 'hello' -- Работает без ошибок.
|
||||||
@@ -204,10 +204,10 @@ end
|
|||||||
-- 3.1 Мета-таблицы и мета-методы.
|
-- 3.1 Мета-таблицы и мета-методы.
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
-- A table can have a metatable that gives the table operator-overloadish
|
-- Таблицы могут быть метатаблицами, что дает им поведение
|
||||||
-- behavior. Later we'll see how metatables support js-prototypey behavior.
|
-- перегрузки-оператора. Позже мы увидим, что метатаблицы поддерживают поведение
|
||||||
|
-- js-прототипов.
|
||||||
f1 = {a = 1, b = 2} -- Represents the fraction a/b.
|
f1 = {a = 1, b = 2} -- Представляет фракцию a/b.
|
||||||
f2 = {a = 2, b = 3}
|
f2 = {a = 2, b = 3}
|
||||||
|
|
||||||
-- Это не сработает:
|
-- Это не сработает:
|
||||||
@@ -226,29 +226,29 @@ setmetatable(f2, metafraction)
|
|||||||
|
|
||||||
s = f1 + f2 -- вызывает __add(f1, f2) на мета-таблице f1
|
s = f1 + f2 -- вызывает __add(f1, f2) на мета-таблице f1
|
||||||
|
|
||||||
-- f1, f2 have no key for their metatable, unlike prototypes in js, so you must
|
-- f1, f2 не имеют ключей для своих метатаблиц в отличии от прототипов в js, поэтому
|
||||||
-- retrieve it as in getmetatable(f1). The metatable is a normal table with
|
-- ты можешь извлечь данные через getmetatable(f1). Метатаблицы это обычные таблицы с
|
||||||
-- keys that Lua knows about, like __add.
|
-- ключем, который в Lua известен как __add.
|
||||||
|
|
||||||
-- But the next line fails since s has no metatable:
|
-- Но следущая строка будет ошибочной т.к s не мета-таблица:
|
||||||
-- t = s + s
|
-- t = s + s
|
||||||
-- Class-like patterns given below would fix this.
|
-- Шаблоны классов приведенные ниже смогут это исправить.
|
||||||
|
|
||||||
-- An __index on a metatable overloads dot lookups:
|
-- __index перегружет в мета-таблице просмотр через точку:
|
||||||
defaultFavs = {animal = 'gru', food = 'donuts'}
|
defaultFavs = {animal = 'gru', food = 'donuts'}
|
||||||
myFavs = {food = 'pizza'}
|
myFavs = {food = 'pizza'}
|
||||||
setmetatable(myFavs, {__index = defaultFavs})
|
setmetatable(myFavs, {__index = defaultFavs})
|
||||||
eatenBy = myFavs.animal -- работает! спасибо, мета-таблица.
|
eatenBy = myFavs.animal -- работает! спасибо, мета-таблица.
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Direct table lookups that fail will retry using the metatable's __index
|
-- Прямой табличный поиск не будет пытаться передавать с помощью __index
|
||||||
-- value, and this recurses.
|
-- значения, и её рекурсии.
|
||||||
|
|
||||||
-- An __index value can also be a function(tbl, key) for more customized
|
-- __index значения так же могут быть function(tbl, key) для настроенного
|
||||||
-- lookups.
|
-- просмотра.
|
||||||
|
|
||||||
-- Values of __index,add, .. are called metamethods.
|
-- Значения типа __index,add, ... называются метаметодами.
|
||||||
-- Full list. Here a is a table with the metamethod.
|
-- Полный список. Здесь таблицы с метаметодами.
|
||||||
|
|
||||||
-- __add(a, b) для a + b
|
-- __add(a, b) для a + b
|
||||||
-- __sub(a, b) для a - b
|
-- __sub(a, b) для a - b
|
||||||
|
Reference in New Issue
Block a user