Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Вывод на экран
- print("i love")
- функцию для вычисления факториала данного числа,
- function fact (n)
- if n == 0 then
- return 1
- else
- return n * fact(n-1)
- end
- end
- print("enter a number: ")
- a = io.read("*number") -- read a number
- print(fact(a))
- загрузка функций из файла.
- \\moduie.lua
- function norm (x, y)
- local n2 = x^2 + y^2
- return math.sqrt(n2)
- end
- function twice (x)
- return 2*x
- end
- dofile("D:\\Program Files (x86)\\lua\\moduie.lua") -- load your library
- n = norm(3, 2)
- print(twice(n)) --> 7.0880180586677
- синус
- print(math.sin(12))
- типы переменных.
- print(type("Hello world")) --> string
- print(type(10.4*3)) --> number
- print(type(print)) --> function
- print(type(type)) --> function
- print(type(true)) --> boolean
- print(type(nil)) --> nil
- print(type(type(X))) --> string
- print(type(a)) --> nil (`a' is not initialized)
- a = 10
- print(type(a)) --> number
- a = "a string!!"
- print(type(a)) --> string
- a = print -- yes, this is valid!
- a(type(a)) --> function
- изменение строки, путем создание новой.
- a = "first string"-- исходная строка
- b = string.gsub(a, "first", "second") -- создать новую строку.
- print(a) --> first string
- print(b) --> second string
- проверка на число.
- print("write number ")
- line = io.read() -- read a line
- n = tonumber(line) -- try to convert it to a number
- if n ~= nil then
- print(n.." mul on 2 = "..n*2)
- else
- error(line .. " is not a valid number")
- end
- Чтобы преобразовать число в строку, вы можете вызвать функцию tostring или объединить число с пустой строкой:
- print (tostring (10) == "10") -- true
- print (10 .. "" == "10") -- true
- таблицы
- t = {} -- создаем пустую таблицу
- t[1] = "first" -- новое поле таблицы, с ключом 1 и значением "first"
- print(t[1])
- t[2] = 20 -- новое поле, с ключом 2 и значением 20
- k = "name"
- print(t[k])--nill
- t[k] = "Jane" -- новое поле, с ключом "name" и значением "Jane"
- print(t[k]) --jane
- a = t[1] -- переменная a получает значение "first"
- b = t[2] -- переменная b получает значение 20
- c = t["name"] -- переменная c получает значение "name"
- a = {} -- пустая таблица
- for i=1,100 -- заполнить ее элементами
- do a[i] = i*2 end-- значение ключа умножено на 2.
- print(a[9]) --> 18
- a["x"] = 10
- print(a["x"]) --> 10
- print(a["y"]) --> nil
- --[[Распространенная ошибка начинающих - путать a.x с a[x]. a["x"] собой таблицу,
- проиндексированную строкой "x". a.x - это таблица, проиндексированная
- по значению переменной x. Увидеть разницу:]]
- a = {}
- x = "y"
- a.x= 20
- a[x] = 10 -- put 10 in field "y"
- print(a[x]) --> 10 -- value of field "y"
- print(a.x) --> 20 -- value 20
- print(a.y) --> 10 -- value of field "y"
- i = 10; j = "10"; k = "+10"
- a = {}
- a[i] = " i"
- a[j] = " j"
- a[k] = " k"
- print(a[j]) -- j
- print(a[tonumber(j)]) -- i
- print(a[k]) -- k
- print(a[tonumber(k)]) -- i
- больше или меньше
- x =30
- y =20
- min = (x < y) and x or y
- max = (x > y) and x or y
- print("min "..min.."\nmax "..max)
- a = "Hello"
- print(a) --> Hello
- print(a .. " World") --> Hello World
- print("Введите число ")
- x = io.read()
- print("Число, которое Вы ввели " ..x ) -- 2 точки знак конкатенация строк
- print("Введите число 1 ") -- Ввод данных
- x = io.read()
- print("Введите число 2 ") -- Ввод данных
- y = io.read()
- print("Сумма чисел = " ..x+y ) -- 2 точки знак конкатенация строк
- print("Введите число ") -- Ввод данных
- x = io.read()
- print("Введите степень числа ") -- Ввод данных
- y = io.read()
- function mul (x,y)
- return x^y
- end
- print(mul(x,y))
- local f = "D:\\1.txt"-- имя файла
- local fwrite -- переменная файла
- fwrite = io.open(f, "a")-- открыть файл
- fwrite:write("jhn")-- записать в файл
- fwrite:close()-- закрыть файл
- print("Введите число итерации ") -- Ввод данных
- x = io.read()
- for i = 1, x do
- print(i)
- y = i ^2
- print("Квадрат " .. i.." равен ".. y)
- end
- function f (n)
- print(n+1) return foo(n) end
- function foo(n)
- print(n) end
- --f(2)
- function add (a)
- local sum = 0
- for i = 1, a do
- sum = sum + i
- end
- return sum
- end
- b = add(3) -- складывает элементы последовательности 'a'
- --print(b)
- s, e = string.find("ehello Lua usersg", "sg")
- --print(s, e)
- function ad (...)
- local s = 0
- for i, v in ipairs{...} do
- s = s + v
- end
- return s
- end
- --print(ad(3, 4, 5, 6, 7))
- for i = 1, math.huge do
- if (i - 500 >= 0) then
- print(i)
- break
- end
- end
- revDays = {["Sunday"] = 1, ["Monday"] = 2,
- ["Tuesday"] = 3, ["Wednesday"] = 4,
- ["Thursday"] = 5, ["Friday"] = 6,
- ["Saturday"] = 7}
- x = "Wednesday"
- print(revDays[x])
- [[
- for i = -10, 10 do
- print(i, i % 3)
- end
- days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
- "Friday", "Saturday"}
- print(days[6])
- print(x%y) -- остаток от деление
- a = {}
- x = 'y'
- a[x] = 10 -- записывает 10 в поле "y"
- print(a[x]) --> 10 -- значение поля "y"
- print(a.x) --> nil -- значение поля "x" (не определено)
- print(a.y) ]]
- a ={"LANDSTAL ", "BRAVURA ", "BUFFALO ", "LINERUN "}
- b = {"400", "401", "402", "403", }
- c={}
- for k,v in ipairs(a) do
- for k1,v1 in ipairs(b) do
- if k == k1
- then --print("[\""..v.."\"".."] =" ..v1)
- c[v]=v1
- end end end
- for k,v in pairs(c) do
- print("[\""..k.."\"".."] =" ..v)
- end
- a = {k=0}
- b = {money =100}
- metatable = { __index = b }
- setmetatable(a, metatable)
- print(a.money)
- a = {keya="keya"}
- b = setmetatable({key0="v"}, { __newindex = a})
- b.key="до"
- print(b.key0)
- b.key1 = "новый ключ б"
- print(a.key)
- print(b.keya)
- foo = {key0=0}
- foo.key = 'ключ из foo' --[[2]]
- mt = {__index = foo} -- setmetatable возвращает первый переданный в неё аргумент
- bar = setmetatable(foo, {__index = foo})
- bar.key2 ='бар' -- Тестирование:
- print(bar.key0) --> 0
- print(foo.key0) --> 0
- print(bar.key) --> 'ключ из foo'
- print(foo.key) --> 'ключ из foo'
- print(bar.key2) --> 'бар'
- print(foo.key2) --> бар
- foo = {}
- mt = {}
- function mt.__newindex(self, key, value)
- foo[key] = value
- end
- bar = setmetatable({a = 10}, mt)
- bar.key = 'vaue'
- print('bar.key', bar.key) --> nil
- print('foo.key', foo.key) --> 'value'
- local car = {}
- car.__index = car --__index содержит указатель на сам класс.
- function car.set(color) --Создает экземпляр теперь уже объекта
- self = setmetatable({}, car) --Переопределяет метатаблицу .
- self.color = color
- return self
- end
- function car.get_color(self)
- z = self.color
- return z
- end
- i = car.set("black") -- ставим точку
- print(i:get_color())
- local a = {} -- Прежде чем создавать экземпляры объекта, необходимо описать соответствующий ему класс.
- a.__index = a --__index содержит указатель на сам класс. Это нужно будет для правильной
- --работы оператора self
- function a.set(x) --Создает экземпляр теперь уже объекта, описывает поля объекта и присваивает полям
- --начальные значения.
- local self = setmetatable({}, a) --Переопределяет метатаблицу вновь созданного объекта,
- -- в результате чего объект получает доступ к методам класса. Методов пока нет, но они будут описаны позже.
- self.x = x
- return self
- end
- function a.get(self)
- return self.x
- end
- local i = a.set(1) -- ставим точку
- print(i:get())
- car = {}
- function car:set(model)
- local object = {}
- object.model = model
- setmetatable(object,self)
- self.__index = self
- return object
- end
- function car:get()
- return self.model
- end
- m = car:set("URAL") --меняем название и цвет
- print(m:get()) --
- local Account = {}
- Account.__index = Account--
- function Account:deposit(balance)
- local obj = {balance = balance};
- setmetatable(obj, self) return obj;
- end
- function Account:withdraw(v)
- z = self.balance+v
- return z
- end
- local v = Account:deposit(60);
- z = v:withdraw(20);
- --print(z)
- local vec = {} -- Прежде чем создавать экземпляры объекта, необходимо описать соответствующий ему класс.
- vec.__index = vec;--__index содержит указатель на сам класс. Это нужно будет для правильной работы оператора self
- function vec:new(x) --Создает экземпляр теперь уже объекта, описывает поля объекта и присваивает полям начальные значения.
- local obj = {x =x };
- setmetatable(obj, self) --Переопределяет метатаблицу вновь созданного объекта, в результате чего объект получает доступ к методам класса. Методов пока нет, но они будут описаны позже.
- return obj;
- end
- function vec:get(y)
- z = self.x+y
- return z
- end
- local v = vec:new(6);
- z = v:get(2);
- --print(z)
- Person= {}
- --тело класса
- function Person:new(fName, lName) -- свойства
- local obj= {}
- obj.firstName = fName
- obj.lastName = lName
- -- метод
- function obj:getName()
- return self.firstName
- end --чистая магия!
- setmetatable(obj, self)
- self.__index = self; return obj
- end
- --создаем экземпляр класса
- vasya = Person:new("Вася", "Пупкин")
- --обращаемся к свойству
- --print(vasya.firstName) --> результат: Вася
- --обращаемся к методу
- --print(vasya:getName()) --> результат: Вася
- function MyClass.new(init)
- local self = setmetatable({}, MyClass)
- self.value = init
- return self
- end
- function MyClass.set_value(self, newval)
- self.value = newval
- end
- function MyClass.get_value(self)
- return self.value
- end
- local i = MyClass.new(5)
- -- tbl:name(arg) is a shortcut for tbl.name(tbl, arg), except tbl is evaluated only once
- --print(i:get_value()) --> 5
- local car = {} -- Прежде чем создавать экземпляры объекта, необходимо описать соответствующий ему класс.
- car.__index = car --__index содержит указатель на сам класс. Это нужно будет для правильной работы оператора self
- function car.set(model, color) --Создает экземпляр теперь уже объекта, описывает поля объекта и присваивает полям начальные значения.
- local self = setmetatable({}, car) --Переопределяет метатаблицу вновь созданного объекта, в результате чего объект получает доступ к методам класса. Методов пока нет, но они будут описаны позже.
- self.color = color
- self.model = model
- return self
- end
- function car.get_color(self)
- z = self.color
- return z
- end
- function car.get_model(self)
- z = self.model
- return z
- end
- local i = car.set("kia","black") -- ставим точку
- print(i:get_model())
- --> 5 --print(i:get_color()) --> 5
- moto = {} --пусть у него будет один свой метод
- moto.__index = moto
- function moto.wheel()
- print("trololo")
- end
- --setmetatable(moto,{__index =car}) --наследуемся
- --local m = moto.set("zi","ye")
- --print(moto:get_model())
- car = {} --создадим "класс" автомобиль
- function car:set(model, color) --инициализируем поля класса
- local object = {}
- object.model = model or "UAZ" -- по умолчанию это будет УАЗ
- object.color = color or "ponos" -- поносового цвета
- setmetatable(object,self) --далее идет превращение таблицы в "класс", объяснять не буду, т.к для этого нужна отдельная статья
- self.__index = self --перед index стоит двойное подчеркивание!
- return object -- возвращаем объект!
- end --создадим первый автомобиль!
- function car:get() --функция получения результата
- return self.model, self.color
- end
- moto = {} -- инициализируем класс мото
- function moto:pet() --переназначение метода
- return "new"
- end
- setmetatable(moto,{__index = car}) --наследуемся
- m = moto:set("URAL","BLUE") --меняем название и цвет
- print(m:get()) -->мы увидим 2000 year
- print(m:pet()) --> URAL BLUE
- function sleep(ms)
- local b = os.clock() * 1000
- while os.clock() * 1000 - b <= ms do end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement