32비트 부호 있는 정수 데이터 타입에 대한 최솟값과 최댓값을 출력하는 법
print("Int32 Min = (Int32.min) Int32 Max = (Int32.max)")
// int형은 플랫폼에 따라 크기가 다름
// 결과 값 : Int32 Min = -2147483648 Int32 Max = 2147483647
var myChar3 : Character = "X" // ‘ : Character ‘ 생략불가, 생략하면 String형임
print(type(of:myChar3)) // 결과 : Character
var myChar4 = "\u{0058}" // 유니코드 형식
print(myChar4) // 결과 : X
var userName = "Kim" // ‘ : String ‘ 생략하는 것이 일반적임
var age = 20
var message = "(userName)의 나이는 (age)입니다."
print(message)
// 결과 : Kim의 나이는 20입니다.
var x = 10
print(x) // 10
x = 20
print(x) //20
let x = 10
print(x)
x = 20
print(x)
결과 :
// main.swift:4:1: error: cannot assign to value: 'x' is a 'let' constant
// x = 20
// ^
// main.swift:1:1: note: change 'let' to 'var' to make it mutable
// let x = 10
// ^~~
// var -> var로 선언하라는 의미 (에러 발생)
인덱스 2의 위치를 추출하고 그 값을 새로운 문자열 변수에 할당
let myTuple = (10, 12.1, "Hi") // 첫번째부터 인덱스 위치 0, 1, 2
var myString = myTuple.2 // myTuple의 인덱스 2를 출력
print(myString)// 결과 : Hi
myTuple의 자료형 출력하는 방법
let myTuple = (10, 12.1, "Hi")
var (myInt, myFloat, myString) = myTuple
print(type(of:myTuple)) // myTuple의 자료형을 출력
// 결과 : (Int, Double, String)
let myTuple = (count: 10, length: 12.1, message: "Hi")
print(myTuple.count) // 결과 : 10
print(type(of:myTuple))
// 결과 : (count: Int, length: Double, message: String)
let myTuple1 = (10, 12.1, "Hi")
print(myTuple1.1) // 결과 : 12.1
print(type(of:myTuple1.1)) // myTuple1 의 인덱스 1의 자료형을 알려줌
// 결과 : double
let myTuple2 = (10, 12.1, "Hi")
var (myInt, _, myString) = myTuple2 // 무시하고 싶은 값에 밑줄을 사용하면 그 값은 무시
print(myInt)
// 결과 : 10
print(10)
print(Int("12"))
print(Int(“hi"))
결과 :
// 10
// Optional(12)
// nil, 정수 값을 반환할 수 없음 아무런 값도 반환할 수 없다는 의미로 nil을 반환
nil 저장하려면 옵셔널 타입으로 선언해야함
옵셔널 선언 시 자료형 뒤에 ?
옵셔널 언래핑 시 변수명 뒤에 !
var x : Int? // 옵셔널 정수형 변수 x 선언
var y : Int = 0
x = 10 // 주석처리 시 x가 nil 값이 되므로 언래핑이 되지 않고 crash 남
print(x) // Optional(10)
print(x!) // forced unwrapping해서 10이 나옴
print(y)
x = x! + 2 // Optional은 언래핑을 통해 연산 해야함
print(x)
y = x!
print(y)
결과 :
// Optional(10)
// 10
// 0
// Optional(12)
// 12
var x : Int?
x = 10
if x != nil { // nil이 아닐 시에 언래핑
print(x!)
}
else { print("nil")
}
var x1 : Int?
if x1 != nil {
print(x1!)
}
else { print("nil")
}
결과 :
// 10
// nil
var x : Int?
x = 10
if let xx = x { // 옵셔널 변수 x가 값(10)이 있으므로 언래핑해서 일반 상수 xx에 대입하고 if문 실행
print(x, xx)
}
else {
print("nil")
}
var x1 : Int?
if let xx = x1 { // 옵셔널 변수 x1이 값이 없어서 if문의 조건이 거짓이 되어 if문 실행하지 않고 else로 감
print(xx)
}
else {
print("nil")
}
결과 :
// Optional(10) 10
// nil
-> if let xx = x 와 if let x = x 같은 의미임 (위 아래 둘 다 사용 가능)
var x : Int?
x = 10
print(x) // optional(10)
if let x = x { //옵셔널 변수 x가 값(10)이 있으므로 언래핑해서 일반 상수 xx에 대입하고 if문 실행
print(x) //10
}
else {
print("nil")
}
var pet1: String?
var pet2: String?
pet1 = "cat"
pet2 = "dog"
if let firstPet = pet1, let secondPet = pet2 {
print(firstPet, secondPet)
} else {
print("nil")
}
// 결과 : cat dog
let names = ["A", "B", "C", "D"]
for name in names[...2] { // 2 이상 나타냄
//[..<2] 2 이하 나타냄
// [...2] 2 까지 나타냄
print(name)
}
결과 :
// C
// D
let names = ["A", "B", "C", "D"]
for name in 1...10 {
print(name)
}
결과 :
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9
//10
let defaultAge = 1
var age : Int?
age = 3
print(age) // 결과 : optional(3)
var myAge = age ?? defaultAge // age가 nil이 아니므로 언래핑된 값이 나옴
print(myAge) // 결과 : 3
let defaultAge = 1
var age : Int?
//age = 3
print(age) // 결과 : nil
var myAge = age ?? defaultAge //age가 nil이므로 ?? 다음 값인 defaultAge의 값이 출력
print(myAge) // 결과 : 1 -> defaultAge 값이 1이기 때문
let defaultColor = "black"
var userDefinedColor: String? // defaults to nilvar myColor = userDefinedColor ?? defaultColor
// nil이므로 defaultColor인 black으로 할당됨print(myColor) // 결과 : black
userDefinedColor = "red"
myColor = userDefinedColor ?? defaultColor
// nil이 아니므로 언래핑된 red가 할당됨print(myColor) // 결과 : red, 주의 optional(red)가 아님
for _ in 1...5 { print("안녕")
}
for i in 1...5 { print("(i) 안녕")
}
결과 :
// 안녕
// 안녕
// 안녕
// 안녕
// 안녕
// 1 안녕
// 2 안녕
// 3 안녕
// 4 안녕
// 5 안녕
let names = ["A", "B", "C", "D"]
for name in names {
print(name)
}
결과 :
// A
// B
// C
// D
for i in 1..<10 {
if i > 5 { break } // if i > 5 break로 할 경우 에러 발생, 반드시 {} 사용
print(i)
}
결과 :
// 1
// 2
// 3
// 4
// 5
var a = 1
var b = 2
var c = 3
var d = 4
if a < b && d > c { // 1 < 2 and 4 > 3 둘 다 참이므로 yes
print("yes")
}
if a < b, d > c { // if문에서 콤마는 AND(&&)의 의미
print("yes")
}
결과 :
// yes
// yes
let weight = 60.0
let height = 170.0
let bmi = weight / (heightheight0.0001) // kg/m*m
var body = ""if bmi >= 40 {
body = "3단계 비만"
} else if bmi >= 30 && bmi < 40 {
body = "2단계 비만"
} else if bmi >= 25 && bmi < 30 {
body = "1단계 비만"
} else if bmi >= 18.5 && bmi < 25 {
body = "정상"
} else {
body = "저체중"
}
print("BMI:(bmi), 판정:(body)")
// 결과 : BMI:20.761245674740483, 판정:정상
< 인덕대학교 'iOS 프로그래밍 기초' 한성현 교수님 강의 자료 참고 >