이 글을 읽는 모두가 Swift를 배우는 동문이라고 생각하고 경어체로 작성된 글입니다.
안녕! 이번 글은 내가 Swift를 배우고 난 후로 처음 쓰는 글이야. 굉장히 Basic 한 내용이지만 기본이 탄탄할수록 좋은 것이기 때문에 헷갈리는 부분들에 집중해서 써볼게. 자 그럼 이제 String Type 선언에 대해 알아보러 가보자.
String 변수 선언
// let으로 선언
let min1: String? // 아무 값도 없음
let min2 = String() // "" 값이 들어가 있음
// var로 선언
var min3: String? // nil 값이 들어가 있음
var min4 = String() // "" 값이 들어가 있음
아주 기본적인 변수 선언이야! 보통 String Type의 변수는 상수로도 많이 쓰이고 변수로도 많이 쓰이기 때문에 둘 다 굉장히 많이 볼 문법임. ㅎㅎ
[1] let & var
String Type에 대해 검색한 사람이라면 초보일 확률이 높기 때문에 let과 var에 대해 설명해 줄게.
나는 이런 식으로 생각을 해서 쉽게 이해했어 :)
let 은 상수(항"상" 같은 "수") = 한번 선언하면 후에 값을 못 바꿈!
var 는 변수("변"하는 "수") = 한번 선언한 후도 값을 계속 바꿀 수 있음!
이걸 알고 난 다음에 !! 위의 예시를 한번 보면 min1, min2는 한번 값을 선언하면 바꿀 수 없는 거고 min3, min4는 값을 선언해도 바꿀 수 있는 것이지.
[2] ?
이건 옵셔널(optional)이라는 친군데 다른 언어를 배우고 온 친구도 프로그래밍을 처음 접한 친구도 모두 이게 뭐지? 싶은 개념일 거야
스위프트에서 매우 매우 중요하고 심오한 개념이지만 우리는 지금 주니어기 때문에 차근차근 친해져 보자.
optional의 본래 뜻은 "선택적인", "마음대로 선택 가능한"이라는 뜻을 지니고 있어.
여기서 뭔가 감이 오지 않아? 안 오면 오게 해 줄게.
마음대로 선택이 가능하다? 반대로 말하면 아직 아무것도 선택된 게 없다는 말이야.
let min1: String?
그럼 이건 무슨 의미일까? min1은 변하지 않는 상수이면서 동시에 아직 아무것도 선택하지 않은 상태라는 것을 의미해.
아무것도 선택하지 않았다는 것은 상태야. 상태? 상태가 뭐지.. 한번 예를 들어보자
아무것도 선택하지 않은 상태 vs 아무것도 없는 상태 -> 이것만 구분할 줄 알면 끝임
let min_Empty = "" // 빈 문자열. 문자열을 비게 하겠다는 선택을 감행함.
let min_Optional: String? // 아무런 선택을 하지 않았음.
즉, 비어있는 상태가 아니기 때문에 후에 빈 문자열이 될 수도 꽉 찬 문자열이 될 수도 있는 상태를 의미하는 거야.
print(minEmpty) // "\n"가 출력됨 -> 스위프트는 기본적으로 print문을 출력하면 한줄을 띄기 때문에 개행 문자인 \n가 출력된다.
print(minOptional) // 코드를 실행하면 컴파일 에러가 발생! -> 문자열이 어떤 상태인지 모르기 때문
개행 문자는 거의 모든 언어에서 동일한데 "\n"이렇게 표기하고 "Hello\n" 이라는 말은 Hello를 출력하고 한 줄 내려가라는 의미로 보면 돼!
문자열이 어떤 상태인지 알려주기 위해서는 초기화(Initialize)를 해줘야 하는데, 초기화는 말만 어렵지 그냥 초기 값을 넣어주어 무슨 상태인지 알려달라는 의미야.
// 선언과 동시에 초기화
let minOptional: String? = "Hi, I'm Min!"
// 선언을 먼저 한 후 초기화
let minOptional: String?
minOptional = "Hi, I'm Min!"
옵셔널은 String Type 뿐만 아니라 정말 많은 Type들에 사용되는 개념이니깐 금방 익숙해질 거야.
[3] String()
let min2 = String()
var min4 = String()
이것을 이해하려면 첫 번째로 프로그래밍에서 매우 중요한 개념인 객체에 대해 알아야 해
후후하하후하ㅎㅜㅎㅏ... 숨을 좀 쉬고 보는 걸 추천할게. 객체라는 개념은 결코 만만한 녀석이 아니거든.
그럼 시작해 보자 go..!
기본적으로 Swift는 객체지향! 프로그래밍 언어야. 와 이게 무슨 말이지?라는 생각이 들 거야.
컴퓨터 공학을 전공했거나 CS(Computer Science)를 공부하지 않은 사람은 모를 확률이 크지..
여기서 다루기에는 너무나도 방대한 내용이기 때문에 아주아주 간단하게 설명해 줄게.
예를 들어 사람을 생각해 보자.
사람이라면 응당 성별, 나이, 키, 몸무게 등등 가질 수밖에 없는 정보들이 존재해.
이러한 정보 중에 나는 키, 나이, 몸무게, 성별 정도만 관심이 있어서 이를 가지고 어떠한 구조, 틀(영어론 Struct, Class)을 만들어볼게.
사람 {
var 키: Int?
var 나이: Int?
var 몸무게: Int?
let 성별: String?
}
간단히 설명해 주면 성별을 제외한 다른 정보는 바뀔 수 있기 때문에 var로 선언을 해줬어.
저렇게 구조를 만들어서 안에 변수들을 저장하는 타입(사람... 이라고 쓴 거)을 사실 Class 혹은 Struct라고 불러.. ㅎㅎ 이건 나중에 더 알아보고!! 암튼 저렇게 만들었잖아.. 그러면 저걸 가지고 뭘 만들 수 있겠어??
min = 사람()
min.키 = 173
min.나이 = 25
min.몸무게 = 63
min.성별 = "남자"
바로 min이라는 사람 정보를 만들었어. 이렇게 짜인 구조(Class, Struct Type)를 가지고 만들어 낸 것을 객체(Instance)라고 표현해!
사람은 매우 매우 매우 많으니깐 저렇게 한번 야무지게 구조를 만들어 놓으면 여러 사람에 대한 정보를 저장한다고 해도 저 코드를 재사용해서 전부 만들어 내면 되니깐 되게 편리하겠지??
이러한 "편리성", "재사용성"이 많은 프로그래밍 문법들이 객체지향을 하는 가장 큰 이유 중 하나야! 후후
객체 지향에 관한 더 자세하고 재밌는 내용들은 Class, Struct를 공부하면서 느낄 수 있을 거야 :0
여기까지가 객체에 대한 아주 기초적인 이해야 ~~~~~
자 그럼 원래 처음에 이해하려던 내용으로 돌아가보자
let min2 = String()
var min4 = String()
이제 뭔가 느껴지는 거야?? 맞아 바로 그거야. 그거.. 그.. 거..
사람 = String!!!!
String 도 사실은 하나의 구조로 짜여 있는 Class/ Struct 거든!!!
그래서 그냥 임의의 빈 String() 객체를 만들어서 전달해 준 거야. 빈 String 객체라는 건 "" 값이 할당된 문자열을 의미하고!
그래서 이렇게 객체를 넘겨준 경우에는 빈 문자열 상태로 "초기화"가 돼서 넘어와 :)
물론 빈 문자열 상태로 초기화해서 넘겨주라는 것도 구조(Class/ Struct)에서 다 설정을 해준 것이지만 일단은 String이나 다른 기본 구조체들은 전부 빈 상태로 준다고 생각하는 편이 쉬울 거야!!!!
[4] 마무리
// let으로 선언
let min1: String? // 아무 값도 없음
let min2 = String() // "" 값이 들어가 있음
// var로 선언
var min3: String? // nil 값이 들어가 있음
var min4 = String() // "" 값이 들어가 있음
자 그럼 이제 정말 이게 무슨 의미인지 알아버린거겠지!?!
사실 아직 처음 공부하는 단계니깐 내용도 너무 복잡하고 많아서 뭔가 빈 듯한 느낌이 들겠지만, 계속해서 보고! 코드를 쳐보고! 나의 글을 읽다 보면 어느샌가 자연스럽게 이런 내용들이 눈에 들어올 거야 후후..
암튼 한 줄씩 어떤 의민지 해석해 보고 다른 타입들에서도 선언에 관한 것들은 전부 비슷하니깐 기본적인 let, var, optional, 객체등에 대한 것들은 꼭 기억하자!
다음 String(2)는 많이 쓰이는 String Property 혹은 Method에 대해 다뤄볼 예정이야. 심심할 때 와서 슥 보고 가 ~~
오랜만에 포스팅하니깐 재밌다 :0
앞으로도 시간 날 때 포스팅 하겠습니다 ~~
'iOS > Swift' 카테고리의 다른 글
[Swift] String(2) - 문자열 관련 함수 (7) | 2023.02.15 |
---|