이름과 나이 출력하기
var name = "HeeAe" // : String 생략하는 것이 일반적임
var age = 23
var aa = "이름은 \(name)이고, 나이는 \(age)살입니다." //문자열을 만들 때는 양쪽에 큰 따옴표
//print("이름은 \(name)이고, 나이는 \(age)살입니다.") //\(출력하고 싶은 변수나 상수)
print(aa)
/* 출력결과
이름은 HeeAe이고, 나이는 23살입니다. */
상수와 변수 선언하기
var name = "HeeAe"
var age = 23
age = 20
var aa = "이름은 \(name)이고, 나이는 \(age)살입니다."
//print("이름은 \(name)이고, 나이는 \(age)살입니다.")
print(aa)
/* 출력결과
이름은 HeeAe이고, 나이는 20살입니다. */
Tuple을 사용하는 프로그래밍 언어
1. python
my_tuple = (1, "hello", 3.14)
2. C#
(int, string, double) myTuple = (1, "hello", 3.14);
3. Swift
let myTuple = (1, "hello", 3.14)
4. Scala
val myTuple = (1, "hello", 3.14)
5. F#
let myTuple = (1, "hello", 3.14)
6. Haskell
myTuple = (1, "hello", 3.14)
7. Ruby
my_tuple = [1, "hello", 3.14] # Ruby uses arrays for tuple-like functionality
8. Rust
let my_tuple = (1, String::from("hello"), 3.14);
9. TypeScript
let myTuple: [number, string, number] = [1, "hello", 3.14];
10. Go
myTuple := [3]interface{}{1, "hello", 3.14}
튜플(Tuple) 실습
let myTuple = (95, 0.2, "Home")
print(myTuple.1)
let myTuple1 = (count: 905, length: 20.02, message: "Go ")
print(myTuple.1, myTuple1.length)
/* 출력결과
0.2
0.2 20.02 */
증가 연산자와 감소 연산자
비교 연산자
범위 연산자
let names = ["A", "B", "c", "D"]
for name in names[2...] { //[...2], [..<2]
print(name)
}
/* 출력결과
c
D */
print swift
https://developer.apple.com/documentation/swift/print(_:separator:terminator:)
for x in 1...5 {
print(x,terminator: " ")
}
_로 참조체 생략 가능
for _ in 1...5 {
print("HA")
}
repeat~while 반복문
repeat {
//
} while 조건식
var i = 10
repeat {
i=i-1
print(i) //출력 결과
} while (i > 0)
반복문에서 빠져나오기(break)
for i in 1...10 {
if i > 5 {
break
}
print(i)
}
/* 출력결과
1
2
3
4
5
/*
if문 조건에서 콤마:조건나열(condition-list)
var x = 1
var y = 2
if x == 1 && y==2 { //논리식이 둘 다 참일 때
print(x,y)
}
if x == 1, y==2 { //조건이 둘 다 참일 때, 두 조건을 콤마로 연결한 condition-list
print(x,y)
}
var a : Int? = 1
var b : Int? = 2
print(a,b)
if let a1=a, let b1=b {
print(a1,b1)
}
/* if let a1=a && let b1=b { //error: expected ',' joining parts of a multi-clause condition
print(a1,b1)
/* }
switch-case문
switch 표현식
{
case match1:
구문
case match2:
구문
case match3, match4: //각 case문 마지막에 break가 자동으로 들어 있음
구문
default:
구문
}
switch-case에서 where절 사용하기
var temperature = 60
switch (temperature)
{
case 0...49 where temperature % 2 == 0:
print("Cold and even")
case 50...79 where temperature % 2 == 0:
print("Warm and even")
case 80...110 where temperature % 2 == 0:
print("Hot and even")
default:
print("Temperature out of range or odd")
}
where : 조건을 추가
var numbers: [Int] = [1, 2, 3, 4, 5]
for num in numbers where num > 3 {
print(num)
}
옵셔널(optional)
값이 없을 때도 사용하려면 ? 사용 -> 옵셔널 int형
변수이름!하면 값이 없는 상태인 nil 저장 가능
옵셔널 괄호 안에 들어감
var x : Int?
print(x)
x = 10
print(x, x!)
옵셔널 타입(매우 중요)
옵셔널 타입 강제 언래핑(forced unwrapping) 1
var x : Int? //옵셔널 정수형 변수 x 선언
var y : Int
x = 2
print(x)
x = x! + 2
print(x)
y = x!
print(y)
forced unwrapping
var x : Int?
if x != nil { // x와 != 사이의 공백이 있어야 함
print(x!)
}
optional binding
//방법1
var x : Int?
x = 10
if let xx = x { //옵셔널 변수 x가 값(10)이 있으므로 언래핑해서 일반 상수 xx에 대입하고 if문 실행
print(x,xx)
}
else {
print("nil")
}
//방법2
//방법3 : short form of if-let to the Optional Binding
var x : Int?
x = 10
if let x
print(x)
}
else {
print("nil")
}
https://docs.swift.org/swift-book/documentation/the-swift-programming-language/revisionhistory/
https://docs.swift.org/swift-book/documentation/the-swift-programming-language/thebasics/
optional binding(여러 옵셔널 값 동시에 언래핑)
//방법1
var x : Int?
var y : Int?
x = 10
y = 5
if let xx = x, let yy = y {
print(x, y, xx, yy)
}
else {
print("nil")
}
//방법
var x : Int?
var y : Int?
x = 10
y = 5
if let x = x, let y = y {
print(x, y)
}
else {
print("nil")
}
두 가지 옵셔널 타입
Implicitly Unwrapped Optional
https://docs.swift.org/swift-book/documentation/the-swift-programming-language/thebasics/
두 가지 Optional 형 : Int? vs Int!
var x : Int?
x = 10
// x = x + 2
var y : Int!
y = 20
y = y + 2
print(x,y)
int?, int! 차이점을 표로 작성
특성 | Int? (옵셔널) | Int! (암시적 언래핑 옵셔널) |
선언 방식 | var num: Int? | var num: Int! |
초기값 | nil | nil |
값 접근 | 언래핑 필요 | 직접 접근 가능 |
nil 가능성 | 명시적으로 표현 | 암시적으로 처리 |
안전성 | 더 안전 | 덜 안전 (런타임 오류 가능성) |
사용 예시 | if let num = num { print(num) } | print(num) |
nil 일 때 접근 | 안전 (오류 없음) | 런타임 오류 발생 |
주 사용 케이스 | 값이 없을 수 있는 경우 | 초기화 이후 항상 값이 있다고 확신할 때 |
nil-coalescing operator (nil병합연산자) ??
let defaultAge = 1
var age : Int?
age = 3
print(age) //과제:값은?
var myAge = age ?? defaultAge
//age가 nil이 아니므로 언래핑된 값이 나옴
print(myAge) //과제: 값은?
var x : Int? = 1
var y = x ?? 0
print(y)
IOS 강의 자료 참고했습니다.
'IOS 기초' 카테고리의 다른 글
[IOS 기초] 10주 BMI 판정,동영상 재생,웹뷰 앱 (2) | 2024.11.07 |
---|---|
[IOS 기초] 9주 (2) | 2024.10.31 |
[IOS 기초] 7주 Xcode로 간단한 앱 개발 (0) | 2024.10.17 |
[IOS 기초] 6주 Swift 문법 5(클래스 failable initializer 상속)파일 (4) | 2024.10.10 |
[IOS 기초] 5주 Swift 문법 4(일급시민 클로저 기초)파일 (0) | 2024.10.09 |
[IOS 기초] 4주 Swift 문법 3(함수 guard문)파일 (1) | 2024.09.26 |
[IOS 기초] 2주 Swift 문법 1(웹스토어, 자료형,변수,상수, tuple) (0) | 2024.09.12 |
[IOS 기초] 1주 iOS 프로그래밍 개요 (1) | 2024.09.05 |