마법사 삼촌에게 받은 신기한 계산 상자
다가오는 조카의 생일에 어떤 선물을 줄지 고민입니다. 고민 중 요즘 조카가 숫자 놀이를 즐겨한다는 소식을 듣고 삼촌은 신기한 계산 상자를 만들어 주면 조카가 좋아할 것이라 생각했어요.
삼촌은 우선 1~9의 숫자가 쓰여 있는 카드를 만들었습니다. 혹시 조카가 '카드에 있는 숫자를 바꾸면 어떡하지?'라는 생각에 삼촌은 카드에 마법을 걸었습니다. 이제 조카는 카드에 있는 숫자를 바꿀 수 없게 됐어요.
이제 삼촌은 카드를 넣고 흔들면 카드에 적혀있는 숫자가 더해져서 결과를 알려주는 신기한 계산 상자를 만들어야 했어요. 삼촌은 먼저 카드를 넣을 수 있는 상자를 구했어요. 그리고 상자를 흔들면 덧셈 결과를 알려줄 수 있게 상자에 종이를 붙여놓고 마법을 걸었습니다.
신기한 계산 상자를 받은 조카는 엄청 좋아했고 삼촌은 뿌듯한 마음으로 조카의 생일을 축하해 줄 수 있었습니다.
프로그래밍 세계는 무언가를 계산하는 것으로 이뤄집니다. 즉, 계산을 하기 위해 우리는 값이라는 것을 다뤄야 합니다.
상자를 만드는 것은 프로그래밍이고 숫자 카드와 결과를 알려주는 종이는 값입니다.
여기서 숫자 카드는 변하지 않기 때문에 항상 같은 값을 나타냅니다. 변하지 않는 값, 바로 상수이죠.
결과를 알려주는 종이는 상자를 흔들 때마다 변하고 있습니다. 변하는 값, 변수입니다.
이렇게 우리는 값을 다룰 때 변하지 않는 값은 상수로, 변해야 하는 값은 변수로 만들어야 합니다.
Swift 세계에선 값을 만들 때 상수로 만들고 싶다면 let을 변수로 만들고 싶다면 var를 사용하기로 약속합니다.
신기한 계산 상자를 Swift로 만들어볼게요.
// 상수
let 숫자카드1 = 1
let 숫자카드2 = 2
// 변수
var 결과종이 = 0
// 상자를 흔들어요
결과종이 = 첫번째숫자카드 + 두번째숫자카드
// 결과를 보여줘요
print(결과종이)
---------------------------------
3
그럼 상수로 만드는 것의 장점은 무엇일까요? 우리는 사람입니다. 사람이기에 언제나 실수할 가능성이 있어요. 값을 다룰 때도 마찬가지입니다. 분명 숫자 카드를 바꿀 생각이 없었는데 나도 모르게 혹은 어디선가 숫자 카드를 바꾸고 있다면 상자를 흔들었을 때 원하는 결과가 나오지 않게 됩니다.
그러므로 변하지 않는 값으로 설정해주고 싶다면 상수를 사용하는 것입니다.
변수는 그럼 왜 사용할까요? 조카가 상자를 흔들 때마다 결과 종이를 바꿔줘야 한다면 집에 결과 종이가 넘쳐나겠죠. 장난기 많은 조카가 하루종일 상자를 흔들면 아마 결과 종이 때문에 침대도 식탁도 놓을 자리가 없을 수도 있습니다. 집, 이렇게 한정된 공간을 우리는 메모리라고 생각하면 됩니다.
즉, 한정된 공간을 아낄 수 있도록 우리는 변수를 사용합니다. 하지만 값이 바뀔 수 있는 위험이 언제나 있으니 조심해서 사용하는 것이 좋습니다.
'개발 > 쉽게 풀어보는 Swift' 카테고리의 다른 글
컬렉션 (Collection) (0) | 2020.10.04 |
---|---|
배열 (Array) (0) | 2020.09.29 |
타입(Type) (0) | 2020.09.22 |