Swift - 입문(1)

kihunism·2023년 5월 29일
1

Swift - 기초 문법

변수와 상수

변수는 var, 상수는 let
또한 Swift는 정적 타이핑 언어 -> 변수나 상수를 정의할 때 자료형을 명시해야 한다.

var age = 31
let birthyear = 1993
자료형 명시 X

age는 나이를 의미, birthyear은 태어난 해를 의미 -> 1년 후 age는 수정이 가능하지만 birthyear는 수정이 불가능(태어난 해는 변하지 않으므로)

1년 후에 age에는 32로 값 수정이 가능, birthyear를 임의로 수정하게 되면 컴파일 에러가 발생하게 된다.

자료형 명시 변수나 상수 선언

var name: String = "kihoon"
let birthyear: Int = 1993
var age:Int = 31
var weight: Float = 82.2

String, Int, Float 타입으로 각각의 변수와 상수가 선언된 것을 확인이 가능하다.
그렇다면 처음에 선언한 자료형를 명시하지 않고 선언했을 때는 컴파일에러가 선언이 되지 않나? 라고 물을 수 있다.
근데 직접 Swift에서는 String과 Int형으로 지정을 해서 우리가 알 수 있는데, 이렇게 자료형을 명시하지 않고도 값을 가지고 자료형을 가지는(정적 타이핑이 가능하게 하는)것을 타입 추론이라고 한다. 31이 Swift에서는 숫자인 것을 추론하여 Int형으로 지정

배열과 딕셔너리

let ages = [3, 20, 61]
let colors = ["green", "red", "yellow"]

let age = ages[1] // 20
let color = colors[0] // "green"
var capitals = [
	"한국": "서울",
    "일본": "도쿄",
    "중국": "베이징",
]

let capital = capitals["일본"] // "도쿄"
capitals["미국"] = "워싱턴" // capitals 딕셔너리에 "미국": "워싱턴" 이라는 딕셔너리 값 추가

배열과 딕셔너리도 상수, 변수처럼 let으로 정의하면 내용을 수정, 제거, 추가가 불가능하다.

배열과 딕셔너리의 자료형 명시(정적 타이핑) -> 대괄호 이용

var colors: [String] = ["green", "red", "yellow"]
var capitals: [String: String] = [
	한국": "서울",
    "일본": "도쿄",
    "중국": "베이징",
]

enum

Enumeration, 열거, 열거형

enum WeekDay: String {
	case: mon
    case: tue
    case: wed
    case: thu
    case: fri
}

var today1: WeekDay = .mon // "mon"
var today2: WeekDay = .tue // "tue"

enum을 쓰는 이유는 오타의 방지 및 의미적으로 속성이 같은 집합들을 묶어서 정의 후에 필요에 맞게 switch문 등을 이용하여 사용하기 위함

enum MediaType {
	case audio(String)
    case video(String)
}

var mp3: MediaType = .audio("mp3") // audio("mp3")
var h264: MediaType = .video("h264") // video("h264")

조건문과 반복문

조건문의 if와 반복문의 for는 모든 개발언어를 아우른다....

let age = 11

if age >= 10 && age < 20 {
	print("10대 입니다")
} else if age >= 20 && age <30 {
	print("20대 입니다")
} else {
	print("30대 이상입니다")
}
// "10대 입니다" 가 출력
for _ in 0..<10 {
	print("나는 iOS 개발자다.")
}
// "나는 iOS 개발자다." 가 10번 출력

if와 for문의 세부적인 형태와 문법은 조금 다르지만 기본적으로 흐름은 다른 언어들과 유사하다.
다른 언어들을 사용하다가 Swift에서의 문법을 사용하려니 약간의 어색함은 있지만 익숙해져야 하며, 익숙해지기 위해선 예제코드를 비롯한 반복적인 숙달이 이루어져야 한다. (기초문법의 중요성)

옵셔널(Optional)

Option, 선택사항, 선택적인(부가적인)

값이 있을 수도 있고, 없을 수도 있음을 표현

값이 없음은 다른 언어와 SQL에서 null로 표현되어 왔다. -> Swift에서는 nil로 표 현

var str1: String = "예제코드1"
var str2: String = ""
var str3: String? = nil

str1과 str2의 차이점이 있다고 생각하면 다시 프로그래밍적으로 생각을 해보아야 한다. ""도 비어 있는 값이 있는 String 문자열이다. 하지만 str3은 비어있는 값도 아닌 값 자체가 없는 상태 nil로 정의되어 있으며 문자열 뒤에 ?연산자를 표기한다.

profile
Code Occulter

0개의 댓글