홈 > 종합게시판
총 0 건, 페이지
구) 자유게시판
전체공개  [잡담] 루아스크립트 독학 2회차..
작성일 2018-04-21 21:04:44 조회수 317 댓글수 0 추천수 0 비추천수 0
작성자 알바
레벨 10 (210.♡.117.242)
경험치 10915
회원가입일 2014-12-29 21:14:09
작성글보기
서명도 수정해봅니다

본문

이번에는 배열..

php 랑 좀 다른 부분들이 있네요

특이 점만 찝고 넘어가야겠소요

 

------------------

a, b = "100", 5

변수 선언은 비슷

 

 

print "Lua script"  -- 문자열 출력 가능
print 1111             -- 숫자 출력 에러 // 숫자는 당연히 안나오겠지..
print ("Lua script")  -- 문자열 출력 가능
print (1111)             -- 숫자 출력 가능


 

a = 1
b = "123abc"
c = nil

print(type(a))
print(type(b))
print(type(c))

 

<결과>
number
string
nil

 

fruit = { 11, 22, "aa", name="apple" }   -- 이름으로 인덱싱할 경우 기본 숫자 인덱싱에서는 제외됩니다.

print (fruit[1])
print (fruit[2])
print (fruit[3])
print (fruit[4])
print (fruit.name)

fruit.number = 100

print (fruit.name, fruit.number)
print (fruit["number"])

<결과>
11
22
aa
nil   -- 이렇게됨
apple
apple 100
100


fruit = { 11, 22, "aa", ["name"]="apple" } -- 요렇게 하면 fuit[4]가 제대로 나옴

 

 

local arr = {}
arr[1] = {1, 2, 3}
print(arr[1][2]) 

2

 

 

숫자5와 문자5는 연산식에 걸면 자료형변환이 자동으로 된다.

일단  여기까지는 php랑 비슷 .

 

 

 -------------------------------

 

 

 

 http://www.lua.org/

 

 

Here is the complete syntax of Lua in extended BNF. (It does not describe operator precedences.)


chunk ::= {stat [';']} [laststat [';']]
block ::= chunk
stat ::=  varlist '=' explist |
    functioncall |
    do block end |
    while exp do block end |
    repeat block until exp |
    if exp then block {elseif exp then block} [else block] end |
    for Name '=' exp ',' exp [',' exp] do block end |
    for namelist in explist do block end |
    function funcname funcbody |
    local function Name funcbody |
    local namelist ['=' explist]
laststat ::= return [explist] | break
funcname ::= Name {'.' Name} [':' Name]
varlist ::= var {',' var}
var ::=  Name | prefixexp '[' exp ']' | prefixexp '.' Name
namelist ::= Name {',' Name}
explist ::= {exp ','} exp
exp ::=  nil | false | true | Number | String | '...' | function |
              prefixexp | tableconstructor | exp binop exp | unop exp
prefixexp ::= var | functioncall | '(' exp ')'
functioncall ::=  prefixexp args | prefixexp ':' Name args
args ::=  '(' [explist] ')' | tableconstructor | String
function ::= function funcbody
funcbody ::= '(' [parlist] ')' block end
parlist ::= namelist [',' '...'] | '...'
tableconstructor ::= '{' [fieldlist] '}'
fieldlist ::= field {fieldsep field} [fieldsep]
field ::= '[' exp ']' '=' exp | Name '=' exp | exp
fieldsep ::= ',' | ';'
binop ::= '+' | '-' | '*' | '/' | '^' | '%' | '..' |
          '<' | '<=' | '>' | '>=' | '==' | '~=' |
              and | or
unop ::= '-' | not | '#'

 


 

 

 ----------------------------------------------

 

 함수로 넘어가보자..

 

 

function 함수명(인자1, 등등)
  명령어들...
end

 

구조는 다른거랑 별반 다르지 않음.. 괄호로 명령어를 묶는 대신에 끝에 end 싸주는 정도..

 

 

 


-- (1) 일반 함수 형식 일반 함수 호출 형태로 인자 없이 바로 호출한다.
function hello1()
  print ("Hello!")
end

 

-- (2) 함수 변수에 저장 : 변수에 함수를 넣고 변수() 로 함수를 바로 실행하는거..

(2) 함수: 함수를 선언하고 hello2라는 변수에 넣는다. C언어에서는 함수 포인터 정도로 인지하면 된다. Lua에서는 단순 변수에 저장하고 호출시 괄호를 붙이면 자동으로 함수가 호출된다.


hello2 = function()
  print ("Goodday!")
end

 

-- (3) 인자 한개 사용   인자가 1개인 함수 호출이다. 물론 인자가 2개 이상도 가능하다.
function hello3(name)
  print ("Hello!, " .. name)
end

hello1()
hello2()
hello3("World~")

 

<결과>
Hello!
Goodday!
Hello!, World~



2번이 특이하네. 나머진 일반적인거

 

-------

 


다중 리턴
Lua 함수에서 재미 있는게 다중 리턴이 있다. 리턴 값이 여러 개 가능하다. 바로 예제를 보자.

 

 

-- 다중 리턴
function square(a)
  local c = a * a
  return c, "square"
end

a, b = square(10)
print(a, b)

<결과>
100 square 

함수에서 리턴되는 값이 여러개일때 각각 변수로 받아내는 방법이다.

재밋네 요거

 

 

-------------------

 

 

0
추천
0
비추천

등록된 댓글이 없습니다.