공부(Swift 기본 문법) - 2
조건문
if문
Example Code
let animal: String = "dog"
if animal == "dog" {
print("강아지 사료 주기")
} else if animal == "cat" {
print("고양이 사료 주기")
} else {
print("해당하는 동물 사료가 없음")
}
switch문
Example Code 1
let color: String = "green"
switch color {
case "blue":
print("파란색")
case "green", "yellow":
print("초록색 or 노란색")
default:
print("찾는 색상이 없음")
}
Example Code 2
let temperature: Int = 30
switch temperature {
case -20...9:
print("겨울")
case 10...14:
print("가을")
case 15...25:
print("봄")
case 26...35:
print("여름")
default:
print("이상 기후")
}
반복문
for문
Example Code
for i in 1...4:
print(i)
let array: [Int] = [1, 2, 3, 4, 5]
for i in array:
print(i)
while문
Example Code
var number: Int = 5
while number < 10 {
number += 1
}
repeat-while문
let animal: String = "dog"
if animal == "dog" {
print("강아지 사료 주기")
} else if animal == "cat" {
print("고양이 사료 주기")
} else {
print("해당하는 동물 사료가 없음")
}
let color: String = "green"
switch color {
case "blue":
print("파란색")
case "green", "yellow":
print("초록색 or 노란색")
default:
print("찾는 색상이 없음")
}
let temperature: Int = 30
switch temperature {
case -20...9:
print("겨울")
case 10...14:
print("가을")
case 15...25:
print("봄")
case 26...35:
print("여름")
default:
print("이상 기후")
}
for문
Example Code
for i in 1...4:
print(i)
let array: [Int] = [1, 2, 3, 4, 5]
for i in array:
print(i)
while문
Example Code
var number: Int = 5
while number < 10 {
number += 1
}
repeat-while문
다른 언어의 do-while
문이랑 같은 기능
Example Code
var x: Int = 6
repeat {
x += 2
} while x < 5
옵셔널
값이 있을 수도 있고 없을 수도 있다.
다른 언어에서 null
이 swift에서는 nil
이라고 한다.
var number: Int? = nil
옵셔널로 지정한 변수를 그렇지 않은 변수에 저장할 수 없다.
var optionalName: String? = "Park"
var requiredName: String = optionalName // 에러 발생(옵셔널이 아닌 변수에는 반드시 값이 저장되어야 함)
옵셔널 바인딩
옵셔널을 안전하게 처리하는 방법
옵셔널 값은 Optional()
이라는 랩에 싸여 있기 때문에 unwrapping하는 과정이 필요하다.
명시적 해제
강제 해제
var number: Int? = 3
print(number!)
!
를 사용
값이 nil
일 경우, 강제 해제를 하면 에러가 발생하기 때문에 위험
비강제 해제(옵셔널 바인딩)
if문, while문, guard문에서 사용
// if문
if let result: Int = number {
}
// guard문
func test() {
let number: Int? = 5
guard let result: Int = number else { return }
print(result)
}
값을 저장할 수 있는 경우에만 unwrapping되어 조건식에 부합하게 되기 때문에 에러가 발생할 위험이 없어진다.
if문의 경우에는 unwrapping한 변수를 if문 블록 내부에서만 사용할 수 있는 반면, guard문의 경우 unwrapping한 변수를 guard문이 속한 블록 전체에서 사용할 수 있다고 한다.
묵시적 해제
컴파일러에 의한 자동 해제
let value: Int? = 6
if value == 6 {
print("6입니다.")
} else {
print("6이 아닙니다.")
}
비교연산자를 통해 옵셔널 값을 비교하면 자동적으로 컴파일러가 unwrapping한다.
옵셔널의 묵시적 해제
let string: String = "12"
var stringToInt: Int! = Int(string) // 옵셔널의 묵시적 해제
print(stringToInt + 1)
print(stringToInt) // 이 경우에는 unwrapping 안 된다.
String to Int의 경우 String 변수에 숫자가 아닌 다른 문자열이 입력되면 nil
값이 반환되기 때문에 옵셔널 값으로 선언해주어야 한다.
이 때 ?
가 아닌 !
를 사용하면 이는 옵셔널의 묵시적 해제에 해당되며, 이후 일반적인 연산에서 사용할 경우 unwrapping된다.
구조체
struct User {
var nickname: String
var age: Int
func information() {
print("\(nickname) \(age)")
}
}
var user = User(nickname: "Park", age: 25)
user.nickname
user.age
user.information()
클래스
class Dog {
var name: String = ""
var age: Int = 0
func introduce() {
print("name \(name) age \(age)")
}
}
var dog = Dog()
dog.name
dog.age
dog.introduce()
초기화 구문 init
struct User {
var nickname: String
var age: Int
func information() {
print("\(nickname) \(age)")
}
}
var user = User(nickname: "Park", age: 25)
user.nickname
user.age
user.information()
class Dog {
var name: String = ""
var age: Int = 0
func introduce() {
print("name \(name) age \(age)")
}
}
var dog = Dog()
dog.name
dog.age
dog.introduce()
초기화 구문 init
생성자
init/deinit
class User {
var nickname: String
var age: Int
init(nickname: String, age: Int) {
self.nickname = nickname
self.age = age
}
init(age: Int) {
self.nickname = "Park"
self.age = age
}
deinit {
print("deinit user")
}
}
var user1 = User(nickname: "Park", age: 25)
var user2 = User(age: 25)
var user3: User? = User(age: 25)
user3 = nil // 이 경우 인스턴스가 더 이상 필요하지 않다고 판단하여 자동으로 deinit이 호출된다.
출처
패스트캠퍼스, 초격차 패키지 : 30개 프로젝트로 배우는 iOS 앱 개발 with Swift
Author And Source
이 문제에 관하여(공부(Swift 기본 문법) - 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tony1803/iOS-공부-Swift-기본-문법-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)