영어로는 Variable로 (문자나 숫자 같은) 값을 담는 컨테이너다. 여기에 담겨진 값은 다른 값으로 바꿀 수 있다. 변수는 마치 (사람이 쓰는 언어인) 자연어에서 대명사와 비슷한 역할을 한다.
변수의 선언
Ruby에서 변수는 알파벳 소문자와 _를 사용한다. 다음 예제는 변수에 값을 대입한 예제다.
a=1 puts a+1 #2 a=2 puts a+1 #3
#은 주석(comment)으로 코드에 부가적인 설명을 쓰거나 사용하지 않는 코드를 비활성화시키기 위해서 사용한다. #뒤에 따라오는 내용은 해석되지 않는다.
세미콜론(;)은 하나의 구문이 끝났음을 명시적으로 나타내는 기호다. 다음처럼 한줄에 여러구문을 사용하고 싶을 때 세미콜론이 유용하다.
a = 1; puts(a+1);
세미콜론은 생략할 수 있는데, 이 경우 줄바꿈을 명령의 끝으로 간주하게 된다.
위의 실습 결과는 각각 2와 3이 출력될 것이다. 변수 a에 담겨 있는 값이 1일 때는 a+1의 결과가 2가 된다. 두번째 결과가 3이 된 것은 a의 값이 2로 바뀌었고, 2+1의 결과인 3이 출력된 것이다.
다음 예제는 변수의 값이 꼭 숫자만 올 수 있는 것은 아니라는 것을 보여주기 위해서 만든 예제다.
first = "coding" puts first+" everybody"
변수 a에 coding 변수 b에 everybody를 활당하는 방법은 아래와 같다.
a, b = 'coding', 'everybody' puts a puts b
변수가 없다면
변수는 코드의 재활용성을 높여준다. 예를들어서 100에 10을 더하고, 10을 나눈 후에 다시 10을 빼고 거기에 10을 곱해야 한다고 치자. 그리고 각 단계마다 그 결과를 출력해야 한다면 코드는 아래와 같을 것이다.
puts(100+10) puts((100+10)/10) puts(((100+10)/10)-10) puts((((100+10)/10)-10)*10)
그런데 계산해야 할 값을 100이 아니라 1000으로 바꿔야 한다면 위의 코드를 모두 수정해야 할 것이다. 변수를 적용해보자.
a = 100 a = a + 10 puts(a) a = a / 10 puts(a) a = a - 10 puts(a) a = a * 10 puts(a)
위의 코드에서 첫번째 줄의 100을 다른 숫자로 바꾸면 나머지 로직에 대입되는 변수의 값이 모두 바뀐다. 수정해야 할 코드가 적다는 것은 그만큼 해야 할 일이 줄어든다는 의미고, 그 과정에서 버그가 발생할 가능성을 낮출 수 있다. 변수의 효용은 뒤에서 배우게 될 반복문, 조건문, 메소드와 결합되면 더욱 더 중요해진다.