D3.js 를 사용하여 데이터 시각화하기 #1 Line Charts
Swift로 MacOS 애플리케이션 만들기 #2 Swift 기초2
2023-12-06
Explanation
사실은 어제 Swift 기초 문법을 공부하고, ‘그래도 내가 그동한 개발한 시간이 있는데 대에충~ 인터넷에 메서드들 검색하면서 만들면 되겠지’라는 생각으로 호기롭게 Xcode 열고 프로젝트를 만들다가, 굉장히 많은 난관에 부딛치며 거의 중상을 입고 패잔병의 마음으로 기초 문법 2탄으로 돌아왔습니다.
그래도 좀 아는게(그나마) 자바스크립트(타입스크립트)라서 어쩔 수 없이, 본문의 내용은 자바스크립트와의 차이점 위주로 작성이 될 것 같습니다.
(이전 글과 마찬가지로 Swift가 거의 처음이라 잘못된 내용이 굉장히 많을 수 있습니다.)
1 2 3 |
// swift let a: String = "a" let b: NSString = "b" |
String은 Swift String이고 구조체.
NSString은 Foundation String이고 클레스.
대에충 느낌적으로 Foundation은 오브젝티브C에서 쓰다가 온 거 같고 Swift는 스위프트 나오면서 만들어진 거 같아요.
라고 하는데, 왕초보인 나에겐 정확히 무슨 차인지 잘 모르겠네요. 지금까지 아는 정보로는 구조체는 값을 복사하고 클레스는 참조값을 복사한다는데..
요 부분은 나중에 프로젝트 하면서 알게되면 추가하도록 할게요.
아마도 당분간은 그냥 String 쓸 거 같아요…
오! 타입 앞에 NS가 붙는건 NextStep의 줄임말로 예전 오브젝티브C 시절의 타입이래요.
(이전에 쓰던건데 왜 NextStep일까요??)
[참고]
https://velog.io/@loinsir/Swift-NS-%ED%83%80%EC%9E%85
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// swift for a in 1 ... 3 { print(a) } // 1 // 2 // 3 for a in 1 ..< 3 { print(a) } // 1 // 2 |
이건 자바스크립테 없는 연산자네요.
이렇게 시작과 끝이 다 있지 않고 시작점이나 끝점만 사용할 수 도 있다고해요.
1 2 3 |
// swift let a = ...3 let b = 1... |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// swift class Test { let a: Int = 1 var b: Int = 2 var c: Int { get { return a + b } set { b = newValue } } } let d = Test() print(d.c) // 3 d.c = 1 print(d.c) // 2 |
위 코드에서 set 부분이 없으면 ‘읽기 전용 계산 속성’ 이라고 합니다.
음… 대략 어떤 느낌인지 알겠지만서도, set의 활용해 대해서는 아직 잘 모르겠네요.
set의 활용에 대해서는 나중에 사용하게 되면 추가해볼게요,
아마도 당분간은 ‘읽기 전용 계산 속성’으로만 사용하게 될 거 같아요.
1 2 3 4 5 |
// swift let a = 1 if a is Int { print("true") // true } |
자바스크립트에서는 타입 체크가 좀 번거로울 때가 많은데, 스위프트는 깔끔한 거 같아요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// swift struct Test { var a = 1 } extension Test { var b: Int { return a + 2 } } let c = Test() print(c.a) // 1 print(c.b) // 3 |
1 2 3 4 5 6 7 8 9 10 11 12 |
// swift protocol Proto { var test: String { get } func test2() -> String } class Test: Proto { var test = "abc" func test2 () -> String { return "test" } } |
프로토콜이라고해서, 무식하게 막 HTTP, TCP, UDP 이런거 생각하고 약간 걱정했는데,
타입스크립트에서 interface랑 비슷한 거 같아요.
역시, 이론 공부는 별로 흥미롭지 않네요..
다시 한번, 프로젝트에 몸통 박치기를 시전하고 다음 포스팅은 조금 더 흥미진진한 이야기로 돌아올…
(수 있기를…)