변수와 변수에 값을 할당하기
지금까지 우리가 puts을 이용해서 문자나 숫자를 출력할때마다 그 문자나 숫자는 출력한 후에 사라졌습니다. 무슨뜻이냐면 만약 우리가 똑같은 문자를 두번 반복해서 출력하고 싶다고 한다면 우리는 다음과 같이 똑같은 코드를 두번 반복해줘야 합니다.
puts '...한 번더 말해 주시죠...' puts '...한 번더 말해 주시죠...' #실행결과 ...한 번더 말해 주시죠... ...한 번더 말해 주시죠...
만약 우리가 이것을 한번만 쓰고 그것 어딘가에 저장해 놓았다가 재사용할수 있다면 그 편이 훨씬 더 좋겠죠. 물론 그렇게 하는 것은 가능합니다. 불가능하다면 제가 이 얘기를 꺼내지도 않았겠지요.
문자열을 여러분 컴퓨터의 메모리에 저장하기 위해서는 문자열에 이름을 붙여줘야 합니다. 프로그래머들은 이 일련의 과정을 할당문(assignment)라 부르고 문자열에 붙여준 이름을 변수(variables)라 부릅니다.
이 변수의 이름은 일련의 문자나 숫자들 어떤것도 될수 있습니다.하지만 첫번재 문자는 소문자여야만 합니다. 그럼 방금전 만들었던 프로그램을 이번에는 문자열에 myString(str이나 myOwnLittleString이나 henryTheEnglish와 같은 이름으로도 줄수 있습니다)이라는 이름을 주어서 다시한번 만들어 보도록 하겟습니다.
myString = '...한 번 더 말씀해 주실래요...' puts myString puts myString #실행결과 ...한 번 더 말씀해 주실래요... ...한 번 더 말씀해 주실래요...
여러분이 변수 myString을 가지고 무엇을 하려고 할때마다 프로그램은 이것을 ‘…you can say that again…‘으로 치환할것입니다. 즉 여러분은 변수 myString은 문자열 ‘…you can say that again…‘을 지칭하고 있다고 생각하시면 되겠습니다. 그럼 조금 더 흥미로운 예를 보도록 하죠.
name='Canadian Swallowtail Tiger Butterfly'+'입니다.' #참고로 이 이름은 어떤 곤충의 이름이에요. puts '제 이름은 ' + name + '.' puts '와우! ' + name + '이라니, 무지 긴 이름이네요!' #실행결과 제 이름은 Canadian Swallowtail Tiger Butterfly입니다. 와우! Canadian Swallowtail Tiger Butterfly이라니, 무지 긴 이름이네요!
또한 우리가 문자열이나 숫자를 변수에 할당했듯이 우리는 다른 문자열이나 숫자를 똑같은 변수에 재할당하는 것도 가능합니다. (변수가 지칭하는 것이 가변적이고 다양할수 있기때문에 저희는 그것을 변수라 부르는 것입니다.)
composer = '모차르트' puts composer + ' 는 당시에 "천재"였습니다.' composer = '베토벤' puts '하지만 난 ' + composer + '이 더 좋은걸.' #실행결과 모자르트는 당시에 "천재"였습니다. 하지만 난 베토벤이 더 좋은 걸.
물론 변수는 문자열이외에도 여러가지 다른 종류의 객체를 할당할 수 있습니다.
var = '또 하나의 ' + '문자열' puts var var = 5 * (1+2) puts var #실행결과 또 하나의 문자열 15
사실 변수는 다른 변수를 제외하고 프로그램에서 사용되어질 수 있는 그 어떠한 것이라도 가리킬 수 있습니다.
var1 = 8 var2 = var1 puts var1 puts var2 puts '' var1 = '팔' puts var1 puts var2 #실행결과 8 8 팔 8
우선 첫째로, 우리가 var2가 var1을 가리키게 했을 때, 사실 이것은 숫자 8을 직접적으로 가리키게 됩니다(var1이 가리키고 있는것과 마찬가지로). 그리고 나서 우리는 var1이 ‘eight’를 가리키도록 했습니다. 하지만 var2가 var1을 가리키고 있는것이 아니라 숫자 8을 가리키고 있기때문에 실제적인 var1의 값은 변하질 않습니다.
3장을 마무리하며
지금까지 우리는 변수, 숫자, 그리고 문자열에 대해서 공부했습니다. 그럼 다음에는 저 세가지를 모두 함께 사용해 보겠습니다.
참고
- 원문 - http://pine.fm/LearnToProgram/?Chapter=03
- © 2003-2009 Chris Pine