mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-25 08:13:29 +03:00
commit
eab982dced
@ -35,7 +35,7 @@ u = [[ Двойные квадратные скобки
|
|||||||
многострочные значения.]]
|
многострочные значения.]]
|
||||||
t = nil -- Удаляет определение переменной t; в Lua есть сборка мусора.
|
t = nil -- Удаляет определение переменной t; в Lua есть сборка мусора.
|
||||||
|
|
||||||
-- Блоки обозначаются ключевыми слоавми, такими как do/end:
|
-- Блоки обозначаются ключевыми словами, такими как do/end:
|
||||||
while num < 50 do
|
while num < 50 do
|
||||||
num = num + 1 -- Операторов ++ и += нет.
|
num = num + 1 -- Операторов ++ и += нет.
|
||||||
end
|
end
|
||||||
@ -139,8 +139,8 @@ local g; g = function (x) return math.sin(x) end
|
|||||||
-- Вызов функции с одним строковым параметром не требует круглых скобок:
|
-- Вызов функции с одним строковым параметром не требует круглых скобок:
|
||||||
print 'hello' -- Работает без ошибок.
|
print 'hello' -- Работает без ошибок.
|
||||||
|
|
||||||
-- Вызов функции с одним табличным параметром так же
|
-- Вызов функции с одним табличным параметром также
|
||||||
-- не требует круглых скобок (про таблицы в след.части):
|
-- не требует круглых скобок (про таблицы в след. части):
|
||||||
print {} -- Тоже сработает.
|
print {} -- Тоже сработает.
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
@ -206,7 +206,7 @@ end
|
|||||||
-- Таблицу можно связать с метатаблицей, задав ей поведение, как при
|
-- Таблицу можно связать с метатаблицей, задав ей поведение, как при
|
||||||
-- перегрузке операторов. Позже мы увидим, что метатаблицы поддерживают
|
-- перегрузке операторов. Позже мы увидим, что метатаблицы поддерживают
|
||||||
-- поведение, как в js-прототипах.
|
-- поведение, как в js-прототипах.
|
||||||
f1 = {a = 1, b = 2} -- Представляет фракцию a/b.
|
f1 = {a = 1, b = 2} -- Представляет дробь a/b.
|
||||||
f2 = {a = 2, b = 3}
|
f2 = {a = 2, b = 3}
|
||||||
|
|
||||||
-- Это не сработает:
|
-- Это не сработает:
|
||||||
@ -233,7 +233,7 @@ s = f1 + f2 -- вызвать __add(f1, f2) на метатаблице от f1
|
|||||||
-- t = s + s
|
-- t = s + s
|
||||||
-- Похожий на классы подход, приведенный ниже, поможет это исправить.
|
-- Похожий на классы подход, приведенный ниже, поможет это исправить.
|
||||||
|
|
||||||
-- __index перегружет в метатаблице просмотр через точку:
|
-- __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})
|
||||||
@ -299,7 +299,7 @@ mrDog:makeSound() -- 'I say woof' -- 8.
|
|||||||
-- это можно изменить. newObj получит свои функции, когда мы установим
|
-- это можно изменить. newObj получит свои функции, когда мы установим
|
||||||
-- метатаблицу для newObj и __index для self на саму себя.
|
-- метатаблицу для newObj и __index для self на саму себя.
|
||||||
-- 5. Напоминание: setmetatable возвращает первый аргумент.
|
-- 5. Напоминание: setmetatable возвращает первый аргумент.
|
||||||
-- 6. : работает, как в пункте 2, но в этот раз мы ожидмаем,
|
-- 6. : работает, как в пункте 2, но в этот раз мы ожидаем,
|
||||||
-- что self будет экземпляром, а не классом.
|
-- что self будет экземпляром, а не классом.
|
||||||
-- 7. То же самое, что и Dog.new(Dog), поэтому self = Dog в new().
|
-- 7. То же самое, что и Dog.new(Dog), поэтому self = Dog в new().
|
||||||
-- 8. То же самое, что mrDog.makeSound(mrDog); self = mrDog.
|
-- 8. То же самое, что mrDog.makeSound(mrDog); self = mrDog.
|
||||||
@ -367,7 +367,7 @@ return M
|
|||||||
local mod = require('mod') -- Запустим файл mod.lua.
|
local mod = require('mod') -- Запустим файл mod.lua.
|
||||||
|
|
||||||
-- require - стандартный способ подключения модулей.
|
-- require - стандартный способ подключения модулей.
|
||||||
-- require ведёт себя так: (если не кешировано, см. ниже)
|
-- require ведёт себя так: (если не кэшировано, см. ниже)
|
||||||
local mod = (function ()
|
local mod = (function ()
|
||||||
<содержимое mod.lua>
|
<содержимое mod.lua>
|
||||||
end)()
|
end)()
|
||||||
@ -404,14 +404,14 @@ g() -- Напишет 343.
|
|||||||
```
|
```
|
||||||
## Примечание (от автора)
|
## Примечание (от автора)
|
||||||
|
|
||||||
Мне было интересно изучить Lua, чтобы делать игры при помощи <a href="http://love2d.org/">Love 2D game engine</a>.
|
Мне было интересно изучить Lua, чтобы делать игры при помощи <a href="http://love2d.org/">игрового движка LÖVE</a>.
|
||||||
|
|
||||||
Я начинал с <a href="http://nova-fusion.com/2012/08/27/lua-for-programmers-part-1/">BlackBulletIV's Lua for programmers</a>.
|
Я начинал с <a href="http://nova-fusion.com/2012/08/27/lua-for-programmers-part-1/">BlackBulletIV's Lua for programmers</a>.
|
||||||
Затем я прочитал официальную <a href="http://www.lua.org/pil/contents.html">Документацию по Lua</a>.
|
Затем я прочитал официальную <a href="http://www.lua.org/pil/contents.html">Документацию по Lua</a>.
|
||||||
|
|
||||||
Также может быть полезной <a href="http://lua-users.org/files/wiki_insecure/users/thomasl/luarefv51.pdf">Краткая справка по Lua</a> на lua-users.org.
|
Также может быть полезной <a href="http://lua-users.org/files/wiki_insecure/users/thomasl/luarefv51.pdf">Краткая справка по Lua</a> на lua-users.org.
|
||||||
|
|
||||||
Основные темы, не охваченные стандартной библиотекой:
|
Ещё из основных тем не охвачены стандартные библиотеки:
|
||||||
|
|
||||||
* <a href="http://lua-users.org/wiki/StringLibraryTutorial">библиотека string</a>
|
* <a href="http://lua-users.org/wiki/StringLibraryTutorial">библиотека string</a>
|
||||||
* <a href="http://lua-users.org/wiki/TableLibraryTutorial">библиотека table</a>
|
* <a href="http://lua-users.org/wiki/TableLibraryTutorial">библиотека table</a>
|
||||||
@ -419,9 +419,7 @@ g() -- Напишет 343.
|
|||||||
* <a href="http://lua-users.org/wiki/IoLibraryTutorial">библиотека io</a>
|
* <a href="http://lua-users.org/wiki/IoLibraryTutorial">библиотека io</a>
|
||||||
* <a href="http://lua-users.org/wiki/OsLibraryTutorial">библиотека os</a>
|
* <a href="http://lua-users.org/wiki/OsLibraryTutorial">библиотека os</a>
|
||||||
|
|
||||||
Весь файл написан на Lua; сохраните его, как learn.lua, и запустите при помощи "lua learn.lua" !
|
Кстати, весь файл написан на Lua; сохраните его как learn.lua и запустите при помощи "lua learn.lua" !
|
||||||
|
|
||||||
Это была моя первая статья для tylerneylon.com, которая также доступна как <a href="https://gist.github.com/tylerneylon/5853042">github gist</a>.
|
|
||||||
|
|
||||||
Удачи с Lua!
|
|
||||||
|
|
||||||
|
Изначально эта статья была написана для tylerneylon.com.
|
||||||
|
Также она доступна как <a href="https://gist.github.com/tylerneylon/5853042">github gist</a>. Удачи с Lua!
|
||||||
|
Loading…
Reference in New Issue
Block a user