본문 바로가기
알면 좋은 맥, 아이폰 정보/아이폰

[Swift under bar] 스위프트에서 '_' , '언더바', 'under bar'는 도대체 왜 쓰고...무엇일까..?

by snapshot 2020. 2. 17.

구글 사전으로 찾아봤다.

컴퓨터

파일을 지정할 때, 구체적인 이름 대신에 여러 파일을 동시에 지정할 목적으로 사용하는 특수 기호. `*', `?' 따위.

컴퓨터
파일을 지정할 때, 구체적인 이름 대신에 여러 파일을 동시에 지정할 목적으로 사용하는 특수 기호. `*', `?' 따위.

 

체육은 우리가 알 필요가 없으니.. 빠이

 

그럼 스위프트에서는 어떻게 쓰일까..?

스위프트 코드들을 보면 가끔 '_' 언더 바로 표현을 한다. 

저 위에 표현과는 다르게 와일드카드는 사용하는 곳에 값을 무시하는 것으로 사용한다.

for-in, closure, 튜플 등에서 사용하지는 않지만 값을 선언할 경우 귀찮은 경고를 보게 된다. 

 

 

let objects = ["가", "나", "다", "라", "마", "바", "사", "아"]
        
for (index, item) in objects.enumerated() {
      print(index)
}


경고 :  Immutable value 'item' was never used; consider replacing with '_' or removing it


해결 방법

for (index, _ ) in objects.enumerated() {
      print(index)
}

 

그냥 튜플의 예를 든 경우다.

 

 

func getData(completion : @escaping (_ data : String) ->  Void) {
        completion("나는 천재 개발자.")
}

func main() {
self.getData { ( _ ) in
        print("데이터 받았다")
    }
}

 

이런 식으로 사용하지 않은 값일 경우는 '_' 언더바 와일드카드로 표시해준다. 

 

'_' 와일드카드는 도대체 왜 사용하냐고 생각할 것이다.

 

우리가 개발을 하다 보면 치명적이지는 않지만 수많은 경고 문구를 디버깅하면서 볼 것이다. 

정말 경고이기에 우리가 고쳐야 할 부분이 있는가 하면 저위에 있는 경고와 같이 불필요한 경고도 볼 것이다.

그냥 내가 생각할 때는 좀 더 중요한 경고에 집중을 위해서 인 거 같다. 

소스를 이리저리 바꾸고 이러는 것보다는 저런 가장 작고 기본적인 경고를 하나하나 없애는 것이 리팩터링의 기본이 아닐까 싶다. 

댓글