오늘 배운 것
Swift는 TYPE SAFE 언어.
타 언어 대비 Swift는 String 타입에 엄격하다는 점을 확인했다.
(아래 코드는 타 언어를 구현한 단순 예시다)
let a: String = "코딩테스트"
// a[2] = "딩"
위처럼 다른 언어들은 subscript를 활용하여
내부에 담긴 값에 접근할 수 있었다.
반대로 Swift는 아래와 같은 코드를 작성해야 했다.
let str: String = "Hello, Stranger"
let startingNumber: Int = 7
let endingNumber: Int = 14
let startIndex = string.index(str.startIndex, offsetBy: startingNumber)
let endIndex = str.index(str.startIndex, offsetBy: endingNumber)
var slicedString = str[startIndex..<endIndex]
print(slicedString)
//
비효율적이지 않은가!!
팀원들이 알려준 내용에서 이해했던 부분을 보면 아래와 같았다.
1. String은 로 slicing하여 담을 수 있다.
2. 하지만 Swift에서 String은 Array도 Collection Type도 아니다.
상당히 복잡한 이야기였지만, 일단 지금 이해하기로는 Swift에서 subscript를 활용해서 값 추출 혹은 접근이 안되는 이유는 Swift가 속도와 안정성을 위해서 제한을 했기 때문이다. 해당 내용을 이해하려면 unicode scalar, substring 등을 공부해야하는 것으로 보인다! 파보자!
오늘의 회고
어느새 2번째 팀과의 만남도 끝났고 팀 과제로 마무리됐다.
코드를 워낙 잘 작성하고 공부를 잘하는 분들이라 많이 배울 수 있었던 시간이었다.
코테의 중요성, 태도의 중요성, 하지만 무엇보다 개발자의 접근 방법을 가장 많이 배웠다. 코테 문제를 풀고 다른 사람들의 풀이를 보며 이해가 안되는 코드들도 들고 오기도 하고,
이해가 안되는 포인트를 들고와 어떻게든 이해하려고 하는 모습이 정말 인상적이었다.
모두 자기 일처럼 발 벗고 도움을 주는 모습이 상당히 좋았는데,
서로 알고 있는 부분을 의견 제시하며 답을 찾았다.
이 때 내가 생각했던 이유가 아니였다는 점을 발견하면서 문법에 대한 공부를 정말 많이 해야한다는 생각을 했는데, 단순 문법이 아닌, 문법의 어떤 부분까지 공부해야하는지 조금 체감하게 됐다. String.append에 String과 Character만 있는 줄 알았지만 알고보니 Collection, String.element 등 정말 많았다.
이런 사소한 포인트까지 파고 들어야 한다니...
역시 개발자는 대단한 것 같다!