기초를 처음부터 다시 다지면서 타입 주석과 타입 추론의 개념을 접하게 되었다.
타입 추론은 기존에 알고 있었지만 타입 주석이라는 단어는 이번에 처음 접하게 되었으나 이미 알고 있는 개념이긴 했다.
두 개념은 모두 변수를 선언할 때 사용되는 개념이다.
1. 타입 주석(Type Annotation)
var name: String
var name: String = "Lily"
타입 주석은 변수를 선언할 때 변수의 자료형까지 함께 명시해주는 것을 의미한다.
첫번째 줄 처럼 name이라는 변수를 선언하면서 String이라는 자료형까지 함께 지정해준다.
두번째 줄 처럼 선언과 동시에 값을 지정해줄 수 있다.
2. 타입 추론(Type Inference)
var name = "Lily"
타입 주석과 달리 변수를 선언할 때 변수의 자료형을 적어주지 않는다.
그래서 초기값에 따라 컴파일러가 알아서 자료형을 유추해 지정해준다.
그렇기 때문에 초기값을 꼭 지정해주어야한다.
그래서 어떤 차이가 있을까?
전에는 그냥 가볍게 여기고 넘어갔던 개념이였지만 다시 한번 학습하는 과정에서 어떤 의문이 들었다.
타입 추론은 컴파일러가 자료형을 유추하는 과정이 한번 더 진행되기 때문에 시간이 더 오래 걸리지 않을까?
조금이라도 시간을 줄이려면 타입 주석 방식을 더 지향해야하는게 옳지 않을까?
그러나 나의 예전 기억에 선배에게 들었던 조언 중 타입 추론을 이용하라는 말을 들은 적이 있다.
결론적으로는 두 방식 중 어떤 방식을 사용하더라도 메모리가 낭비된다거나 하는 메모리적 차이는 없다.
그러나 컴파일 시간은 타입 추론이 좀 더 오래 걸린다. 컴파일러가 지정해주지 않은 타입들을 유추하는 과정이 필요하기 때문이다.
결론
이러한 사실을 알고 내가 한 생각은 타입추론은 굳이 쓰지 않아도 되는거 아닌가? 굳이 필요한 개념인가? 라는 생각이 들었다.
그러나 좀 더 생각해보니 이를 활용할 수 있는 방법이 있을 것 같다.
예를들어 위의 예시처럼 name이라는 변수를 선언할 때 name은.. 그냥 생각해도 당연히 String 타입일 것 같다.
그런데 타입 주석만 존재했다면 굳이 String이라고 타입을 명시해주어야하니 어떻게 보면 개발자의 노동이 좀 더 들어갈 수 있을 것 같다는 생각이 들었다.
즉, 두 개념을 적재적소에 사용한다면 보다 편리하게 변수선언을 할 수 있을 것 같다.
+) 선배가 왜 타입추론을 쓰라고 했는지 모르겠지만.. 편해서 써보라는 뜻이 아니였을까 싶다. :)
+) 23. 04. 20

Swift Style Guide 두리번 거리다 이런 글을 발견했다..!
불필요한 타입을 생략함으로 간결하게 표현하기를 권장하고 있다.
하긴 생각해보면 프로젝트할 때 많은 변수가 필요할 때가 있는데 이럴때마다 타입을 모두 적어주면 좀 지저분해 보일 수 있을 것 같다.
그리고 이것뿐만 아니라 딕셔너리나 배열도 쓰는 방법이 여러가지가 있는데 컴파일러가 요구할 때 말고는 Dictionary<String, Int> 이것보다 [String: Int] 요런 식으로 사용하라고 한다.
숏코딩이 무조건 좋은게 아닌것처럼 어느정도 사람이 알아볼 수 있는 정도로 간결하게 작성하는 그 지점을 파악하는게 중요할듯 하당..
'iOS > Swift' 카테고리의 다른 글
| [iOS/Swift] Hashable, HashValue, Equatable 이란 (0) | 2024.03.31 |
|---|---|
| [iOS/Swift] Convenience init (0) | 2023.04.21 |
| [iOS/Swift] CoreData 공부하기 (0) | 2022.08.23 |
| [iOS/swift] navigation controller에서 root view 지정 (스토리보드 구성) (0) | 2022.08.20 |
| Reactive X 공부 (0) | 2022.07.19 |