10. 변수(variable)
• 변할 수 있는 값에 이름을 붙인 것
• RPG Maker 이벤트 커맨드의 "변수"가 수치값만을 담을 수 있는
것과는 달리, 루비에서의 변수는 여러 가지 형태의 데이터 (수치, 문
자열(String), 커스텀 클래스의 인스턴스 등)를 담을 수 있는 포괄
적인 개념이다. (사실 이벤트 커맨드의 변수는 스크립트의
$game_variables 글로벌 변수 (Game_Variables 클래스의 인
스턴스)에 보관되어 있다는 사실!)
• 로컬 변수
• 인스턴스 변수
• 글로벌 변수
11. 변수의 이름을 지을 때는, 다음 사항에 유의하여야 한다:
1. 맨 처음 문자가 영어 소문자 또는 _ (언더 바)인 것. (사실 한글도 가능
하나 기존 코드와의 일관성을 유지하기 위해 추천하고 싶지는 않다. 쓰
지 말라는 얘기는 아님.)
2. 두번째 이후 문자가 영문자, 숫자 또는 _ (언더 바)인 것.
3. Ruby 예약어* 제외.
* Ruby 예약어: alias, and, begin, break, case, class, def, do, else,
elsif, end, ensure, false, for, if, in, module, next, nil, not, or,
redo, rescue, retry, return, self, super, then, true, undef,
unless, until, when, while, yield
(네이밍에 관해 참고하면 좋은 내용: https://github.com/dalzony/
ruby-style-guide/blob/master/README-koKR.md)
13. 반드시 선 대입 후 참조
루비에서는 zzz 변수를 참조하기 전에는 zzz 변수에 반드시 무언가를 먼저 대입해야 한다.
(옳지 않은 예)
> p zzz
=> #<NameError: undefined local variable or method `zzz' for
main:Object>
>
(옳은 예)
> zzz=5
=> 5
> p zzz
=> 5
>
14. 자기 대입
> x=1
=> 1
> x+=7
=> 8
> x-=3
=> 5
> x*=2
=> 10
> p x
=> 10
>
/=, %= 도 사용할 수 있음
15. 글로벌 변수
• 로컬 변수와 달리 범위에 구애받지 않고 아무데서나 대입
및 참조가 가능함
• 루비에서는 $global 과 같이 이름 앞에 $ 문자를 붙이면 글
로벌 변수가 된다.
• 주의: 여러 곳에서 같은 변수에 대입/참조하는 경우 자칫 결
과를 예측하기 힘든 코드를 낳을 수 있으므로 되도록이면 사
용을 자제하도록 하자.
17. Backslash 기법
문자열 내 Backslash(백 슬래쉬) 기법을 사용하기 위해서는 ' '가
아닌 " " 를 이용하도록 하자.
> a = "RPG MAKER VX ACE"
=> "RPG MAKER VX ACE"
> b = "MADE BY ENTERBRAIN"
=> "MADE BY ENTERBRAIN"
> print a+"n"+b
RPG MAKER VX ACE
MADE BY ENTERBRAIN=> nil
>
18. 식 전개
문자열 내 식 전개를 사용하기 위해서는 ' '가 아닌
" " 를 이용하도록 하자.
> game = "RPG"
=> "RPG"
> p "#{game} MAKER VX ACE"
=> "RPG MAKER VX ACE"
>
20. 조건 분기
• 주어진 조건식의 결과 (참 또는 거짓)에 따라 각각 다른 처리
를 하기 위해 사용된다
• 이벤트 커맨드의 "조건 분기"와 같은 원리
21. 비교 연산자
• 두 식을 비교하여 조건식으로 표현할 때
• == 같다
• != 같지 않다
• < 작다
• > 크다
• <= 작거나 같다
• >= 크거나 같다
= 이 아니다!
혼동 주의할 것.
22. 논리 연산자
• and ("그리고", 양쪽의 식이 둘 다 성립하면 참(true), 그렇지 않으면
거짓(false)이 된다)
• && and와 같은 뜻
• or ("또는", 양쪽의 식 둘 중 하나라도 성립하면 참(true), 그렇지 않
으면(두개의 식 모두 성립하지 않는 경우) 거짓(false)이 된다)
• || or와 같은 뜻
• not ("아니다", 바로 뒤의 식이 성립하지 않으면 참(true), 그렇지 않
으면(성립하면) 거짓(false))
• ! not과 같은 뜻
23. > p (100>77 and 1+1==2)
true
=> true
> p (100>77 && 1+1==2)
true
=> true
24. > p (1+1==3 or 2+2==3)
false
=> false
> p (1+1==3 || 2+2==3)
false
=> false
25. > p (not true)
false
=> false
> p (!true)
false
=> false
26. 조건 분기 - if문
> a=7
=> 7
> if a>=10
.. print "big"
.. elsif a>=5
.. print "medium"
.. else
.. print "small"
.. end
medium
=> nil
if 조건1
실행_내용
elsif 조건2
실행_내용
elsif 조건3
실행_내용
(...)
else
실행_내용
end
27. 조건 분기 - unless
> a=7
=> 7
> unless a>=10
.. print "small"
.. end
small
=> nil
unless 조건
실행_내용
end
28. 조건 분기 - case
> a=0
=> 0
> case a
.. when 0
.. print "good"
.. when 1
.. print "normal"
.. when 2
.. print "bad"
.. end
good
=> nil
case 변수
when 값1
실행_내용
when 값2
실행_내용
when 값3
실행_내용
end
29. 조건 분기 - 삼항연산자(?:)
> a=3
=> 3
> p (a>=10 ? "big" : "small")
"small"
=> "small"
조건식 ? 참일 때의 값 : 거짓일 때의 값