기어가더라도 제대로

[4일차] Type annotation 본문

Swift - 기초

[4일차] Type annotation

Damagucci-juice 2022. 9. 28. 13:25
//MARK: - without type annotation
let name = "kimch"
var age = 0

//MARK: - with type annotation
let name: String = "kimch"
var age: Int = 0

이런식으로 사용하는 것입니다. 그냥 타입을 정해주지 않아도 사용은 할 수 있긴 하지만,
생성한 데이터에 대해서 어떤 타입을 확정시켜주겠다라는 것을 딱 집어준것이에요. 

이런 행동은 어떤 때 유리할까요? 만약 변수를 생성만 하고, 그 안에 구체적인 값은 넣지 않은 상황에서 미래에 들어올 데이터의 타입은 이거야 라고 알려 줄 수 있는 역할을 해요. 

예를 들면 이런것도 할 수 있겠죠.

var someData: Double
someData = 15.3

그렇지만 let 으로 선언한 변수는 되지 않아요. 

타입 어노테이션을 언제 왜 쓰는지?

타입 어노테이션은 왜 있으며, 언제 쓰는지 알아보도록해요.

1.  Swift 에서는 어떤 타입이 사용되어야하는지 알 수 없어요.

2. 기본값 이외에 다른 타입을 사용하게 할 수 없어요(예를들면 처음에 0 을 넣으면 그 변수는 Double 타입으로 사용할 수 없어요.)

3. 아직 변수에 값을 할당하고 싶지 않아요.

위와 같은 상황일 때 타입 어노테이션을 사용합니다. 

1번은 인터넷에서 지역 정치인의 이름이 담긴 데이터를 긁어올 때, 그 데이터가 String으로 쓰일지 알 수 없다는 이야기에요. 

var percentage: Double = 99

2번째 설명을 위해 위와 같은 코드를 썼는데, 타입 어노테이션 덕분에 우리는 숫자 99를 넣어서 기본적인 상황이라면 percentage 변수는 Int로 인식이될테지만 여기서는 Double 이라고 명시해주었기 때문에 Double 로 쓸 수 있습니다. 

3번째 경우에는 어떨까요? 

var name: String

"변수를 생성하긴 할건데, 아직 값은 넣고 싶지 않아" 라고 Swift 에게 알려주는 것이죠. 추후에 name 이라는 변수에 String 은 넣을 수 있지만 다른 타입의 데이터는 넣을 수 없겠죠. 

그러면 타입 어노테이션을 쓰는 것과 타입 추론을 사용하는 것에는 어떤 차이가 있을까요? 

타입 추론을 쓰면 코드가 좀더 간결해지겠죠. 어떤 타입인지 변수명에 대략 나타내주기는 하겠지만 확인하기 위해 opt 클릭을 해봐야할것이고요. 

간결한 코드와 가독성을 위해 타입 추론을 써도 되고, 확실하게 알려주기 위해서 타입 어노테이션을 사용해도 되고 어느쪽이든 괜찮습니다. 

왜 빈 Collection 을 만드나요?

배열과 같은 데이터를 사용하기 전에 let 으로 선언해서 딱 그만큼만 고정시켜놓고 사용할 수도 있는데, data 의 크기를 모르면 어떻게 하는 것이 좋을까요? 
일단 빈 데이터를 만들어 놓고 그때 그때 계산되는 데이터를 추가해주는 편이 낳을 수 있습니다. 

 

Comments