라티의 작은 일기장

[1일차] Swift 기본 문법 공부 및 첫인상 본문

Swift

[1일차] Swift 기본 문법 공부 및 첫인상

코드라티 2023. 2. 20. 23:43

Swift는 Apple에서 자사 플랫폼에 속하는 iOS / iPadOS / MacOS / tvOS / watchOS의 애플리케이션 및 기능 개발을 위해 Objective-C 이후 차세대 언어로서 개발한 언어이다. 

컴파일 및 실행을 위한 개발 환경은 XCode이며, 현재 XCode는 MacOS에서만 사용할 수 있다.

따라서 Swift를 통한 Apple 생태계 내 앱 개발을 위해서는 현재 맥북이 거의 필수적이라고 볼 수 있겠다.

 

물론 아이패드에도 Swift의 간단한 코드들을 실행하고 SwiftUI를 통해 그 모습을 미리 볼 수 있는 Swift Playground가 마련되어 있으나, 앱 개발을 위해 다양한 모듈을 패키지로 관리하고, UI 구현을 위한 Asset들을 구해서 적용하고, 시뮬레이터를 통해 프로토타입을 테스트하는 등 XCode의 강력한 기능들을 포기하면서 Swift Playground로 앱 개발을 한다는 것은 매우 비효율적이다.

 

다시 Swift로 돌아오자면, 새롭게 Swift를 배우는 사람으로서 주목하게되는 것은 Swift가 강점으로 내세우고 있는 3가지 키워드일 것이다.

Safe, Fast, Expressive

필자는 이들 중에서도 Safe에 주목하였다. 프로그래밍 언어를 공부하여 결과물로서 프로그램을 만든다고 할 때, 무수한 오류와 싸워보지 않은 사람은 없을 것이다. 개발과 디버깅은 절대 양분하여 생각할 수 없다.

Swift의 개발자들도 그러한 경험이 있었을 것이고, Objective-C의 차세대 언어로 Swift를 개발할 때 이러한 점을 보완하고 싶었을 것이다.

강의 클립 중 함수 사용법에 대해 다루는 강의에서, 함수의 기본형을 보고 그러한 점을 느낄 수 있었다.

func 함수명(파라미터 이름: 데이터 타입) -> 반환 타입 {
	return 반환 값
}

상수와 변수 및 데이터 타입, 컬렉션 타입에 대해 알아볼 때에도 Python과 JS를 언뜻언뜻 볼 수 있었지만, 함수의 기본형은 그야 말로 엄격함의 정석이었다. 데이터 타입과 반환 타입을 지정함으로써 모호한 객체 타입으로 발생할 수 있는 여러 문제들을 줄였다.

 

특히 인상 깊었던 것은, 함수의 매개변수에 default value를 지정할 수 있다는 것과,

func greeting(friend: String, me: String = "Rati") {
	print("Hello, \(friend)! I'm \(me)")
}

greeting(friend: "Albert")
/*
"Hello, Albert! I'm Rati"
*/

 

매개변수에 레이블을 지정하여 코드의 가독성과 표현력을 높였다는 점.

func sendMessage(from myName: String, to name: String) ->
String {
	return "Hello \(name)! I'm \(myName)"
}

sendMessage(from: "Rati", to: "Json")

/*
"Hello Json! I'm Rati"
*/

마지막으로 매개변수의 개수를 특정지을 수 없는 상황에서 유용할 것 같은 가변 매개변수 지원이다.

func sendMessage(me: String, friends: String...) -> String {
	return "Hello \(friends)! I'm \(me)"
}

sendMessage(me: "Rati", friends: "Json", "Albert", "Stella")

/*
"Hello ["Json", "Albert", "Stella"]! I'm Rati"
*/

 

패스트캠퍼스 바로가기 : http://bit.ly/3Y34pE0

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

> 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

'Swift' 카테고리의 다른 글

[6일차] 상속  (0) 2023.02.25
[5일차] 프로퍼티  (0) 2023.02.24
[4일차] 초기화 구문 init()  (0) 2023.02.23
[3일차] 구조체와 클래스  (0) 2023.02.22
[2일차] 옵셔널과 옵셔널 바인딩  (0) 2023.02.21