var name = "Z2A3"
var age : Int = 10
var aa = "이름은 \(name)이고, 나이는 \(age)입니다"
print(aa)
\(출력하고 싶은 변수나 상수)
- varx:Int=10
- print(x); print("x"); print("\(x)");print("값은 \(x)입니다.")
- print("Int32 Min = \(Int32.min) Int32 Max = \(Int32.max)")
변하지 않는 상수 값은 let으로 사용, 중간에 변경하려 하면 오류가 남
튜플 실습
let myTuple = (10, 2.1, "Hi")
print(myTuple.1)
let myTuple1 = (count: 10, length: 12.1, message: "Hi")
print(myTuple1.1, myTuple1.length)
증가 연산자와 감소 연산자
- 단항 연산자
- x = x + 1 // x 변수의 값을 1 증가시킴
- x = x - 1 // x 변수의 값을 1 감소시킴
- 위의 표현식은 x의 값을 1 증감
swift 에는 ++나 --같은 연산자가 없음!
비교 연산자
- ==는 값이 같은가?
- ===는 동일한 메모리 주소인가?
범위 연산자
- 닫힌 범위 연산자(closed range operator)
- x...y ➡️ x에서 시작하여 y로 끝나는 범위에 포함된 숫자
- 5...8 ➡️ 5, 6, 7, 8
- 반 열린 범위 연산자(half-open range operator)
- x..<y ➡️ x부터 시작하여 y가 포함되지 않는 모든 숫자
- 5..<8 ➡️ 5, 6, 7
클래스, 객체, 인스턴스의 차이
_로 참조체 생략 가능
for _ in 1...5 {
print("안녕")
}
배열의 항목 접근
repeat~while 반복문
- swift 1.x의 do ... while 반복문을 대신하는 문
- repeat ... while 반복문의 몸체는 적어도 한번은 실행
swift에서는 for문이나 if문을 사용할 때 뒤에 나올 실행코드가 한문장이라도 꼭 중괄호 안에 넣어줘야 한다.
continue문
- continue 문은 반복문에서 continue문 이후의 모든 코드를 건너뛰고 반복문의 상단 시작 위치로 돌아감
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)
}
guard문 -> swift에서 가장 중요한 조건문
switch-case문 예제
switch-case에서 where절 사용하기
- where절을 switch case에 부가적인 조건을 추가하기 위하여 사용
- 값이 속하는 범위뿐만 아니라 그 숫자가 홀수인지 짝수인지도 검사
where : 조건을 추가
- 특정 패턴과 결합하여 조건을 추가
fallthrough
- C/C++, objective-C와 달리 case문 다음에 break 문을 포함할 필요가 없음
- Swift는 일치하는 case문을 만나면 자동으로 빠져나옴
- case별로 빠져 나가지 않고 아래로 계속 내려가게 하려면 fallthrough 문 사용
swift에서 값이 없을 때도 변수를 사용하고 싶을 때는 이렇게 사용한다. (Optional )
null은 swift에선 nil
자료형이 정해지지 않았을 때 [변수이름 !] 으로 작성하면 옵셔널 래핑을 강제로 풀 수 있다.
nil이 아닐 때만 !를 이용해서 래핑을 풀 수 있다. 값이 없을 때는 !를 이용해서 래핑을 풀면 안된다.
forced unwrapping
주의 : if x!=nil 이라고 쓰면 안됨
옵셔널 타입 강제 언래핑(forced unwrapping) 2 : optional binding
- 강제 언래핑하는 또 다른 방법으로, 옵셔널 바인딩(optional binding)을 이용하여 옵셔널에 할당된 값을 임시 변수 또는 상수에 할당
2행의 x = 10을 쓰지 않으면 else로 넘어간다.
위 사진의 3열은 다음 코드와 같이 사용해도 같은 값이 출력된다.
- if let xx = x
- if let x = x
- if let x
Implicitly Unwrapped Optional
- 형 다음에 ?가 아닌 !를 쓰는 옵셔널형
- Int!, String!
- 먼저 일반 옵셔널 값으로 사용하려고 하지만, optional로 사용할 수 없는 경우 Swift는 값을 자동으로 강제로 품
- Optional로 사용할 수 없으면 자동으로 unwrap함
특성 | Int? | Int! |
선언 방식 | var x: Int? | var x: Int! |
기본값 | nil | nil |
강제 언래핑 필요 | 필요 (x!) | 불필요 |
안전성 | 더 안전 | 덜 안전 |
사용 시점 | 값이 있을 수도 있고 없을 수도 있는 경우 | 값이 항상 존재한다고 확신할 때 |
nil 체크 | 권장됨 | 생략 가능 (하지만 위험) |
옵셔널 바인딩 | 필요 (if let, guard let 등) | 불필요 (하지만 권장됨) |
런타임 크래시 위험 | 낮음 | 높음 (nil일 때 접근 시) |
- 옵셔널변수 ?? nil일 때 할당되는 값
- 옵셔널 변수의 값이 nil이면 ?? 다음 값으로 할당됨
- 옵셔널 변수의 값이 nil이 아니면 언래핑된 값이 나옴
'iOS프로그래밍 (2학년 2학기)' 카테고리의 다른 글
241009 iOS프로그래밍기초 6주차 (1) | 2024.10.14 |
---|---|
241002 iOS프로그래밍기초 5주차 (2) | 2024.10.14 |
240926 iOS프로그래밍기초 4주차 (3) | 2024.09.26 |
240912 iOS프로그래밍기초 2주차 (0) | 2024.09.12 |
240905 iOS프로그래밍기초 1주차 (2) | 2024.09.05 |