Xcode을 사용하여 간단하게 자신의 이름과 나이을 출력했습니다.
변수는 var 키워드를 이용하여 선언되며, 변수를 생성할 때에 값을 가지고 초기화할 수도 있습니다.
애플은 코드의 효율성과 실행 성능을 높이기 위해서 변수(var)보다는 상수(let)를 사용하라고 권장합니다.
튜플(tuple)을 지원하는 프로그래밍 언어는 여러 가지가 있습니다.
- 파이썬 (Python): 튜플은 불변(immutable)한 데이터 구조로, 여러 값을 그룹화할 수 있습니다.
- 스칼라 (Scala): 튜플을 사용하여 여러 타입의 값을 그룹화할 수 있습니다.
- 리스크 엘리 (Racket): 튜플을 지원하며, 여러 값의 집합을 표현할 수 있습니다.
- Haskell: 튜플을 통해 여러 타입의 데이터를 함께 사용할 수 있습니다.
- 루비 (Ruby): 배열과 비슷하지만, 불변성을 가진 튜플을 사용할 수 있습니다.
- 자바스크립트 (JavaScript): ES6부터 도입된 배열을 통해 유사한 기능을 사용할 수 있습니다.
- 코틀린 (Kotlin): 튜플을 지원하며, 여러 값을 쉽게 반환할 수 있습니다.
- 엘릭서 (Elixir): 튜플을 기본 데이터 구조로 사용합니다.
swift에서 튜플(Tuple)를 이용한 출력문
튜플을 생성할 때 각 값에 이름을 할당할 수도 있습니다.
Void는 빈 튜플(empty tuple)
typealias Void = () 아무 내용도 없는 튜플, typealias 새로운자료형명 = 기존자료형명입니다.
swift
x++ // x를 1 증가, x-- // x를 1 감소
하지만 switf에서는 이와 같은 연산은 사용불가능 합니다. 때문에
x+=1, x-=1를 사용해야합니다.
swift 비교연산자
- x == y x와 y가 같다면 true를 반환
- x > y x가 y보다 크면 true를 반환
- x >= y x가 y보다 크거나 같다면 true를 반환
- x < y x가 y보다 작다면 true를 반환
- x <= y x가 y보다 작거나 같다면 true를 반환
- x != y x와 y가 같지 않다면 true를 반환
for를 이용한 출력문
terminator를 이용한 출력문
sss를 5번 반복했지만 x라는 변수를 사용하지 않자 swift에서 _문으로 고쳐준다는 매세지가 나왔습니다.
swift에서는 이런식으로 더 좋은 혹은 잘못된 부분을 추천하면 고쳐줍니다.( _로 참조체 생략 가능.)
swift에서는 swift 1.x의 do … while 반복문을 대신하는 문으로
repeat … while 를 사용하며 반복문의 몸체는 적어도 한번은 실행합니다.
반복문에서 빠져나오기위해서 break를 사용합니다.
swift에서는 if 문 다음의 실행 코드가 한 줄이라도 중괄호({})를 필수적으로 사용해야 합니다.
swift에서 if 문 조건에서 콤마를 사용하여 여러 조건을 나열하는 방법에 대해 설명해 드리겠습니다.
swift에서는 if 문에서 여러 조건을 나열할 때 && (AND) 또는 || (OR) 연산자를 주로 사용하지만,
콤마를 사용하는 경우는 주로 튜플을 활용할 때 나타납니다.
switch-case에서 where절
where절을 switch case에 부가적인 조건을 추가하기 위하여 사용합니다.
fallthrough
C/C++, objective-C와 달리 case문 다음에 break 문을 포함할 필요가 없음
swift는 일치하는 case문을 만나면 자동으로 빠져나옴
case별로 빠져 나가지 않고 아래로 계속 내려가게 하려면 fallthrough 문 사용
변수명 뒤에 ? 를 사용하여 nil를 출력할 수 있습니다.
swift에서는 변수값이 없을 때 nil를 출력합니다. 이 것을 옵셔널(Optional)라고 합니다.
옵셔널 변수에 값이 있으면 옵셔널로 "래핑되었다(wrapped)"고 합니다.
옵셔널에 래핑된 값은 강제 언래핑(forced unwrapping)으로 푸는 것이 가능합니다. (변수 뒤에 ! 사용)
변수에 nil를 저장할려고 하면 swift에서 nil를 사용할 수 없다고 나옵니다.
옵셔널(Optional) 값에 연산자를 사용하기 위해서는 변수명뒤에 !를 사용하여,
강제 언래핑(forced unwrapping)하여 연산자를 사용해야합니다.
for문을 사용해 x의 값을 확인하여 강제 언래핑(forced unwrapping)의 실행 유무를 정할 수 있습니다.
(주의 : if x!=nil 이라고 쓰면 안됩니다.)
강제 언래핑하는 또 다른 방법으로, 옵셔널 바인딩(optional binding)을
이용하여 옵셔널에 할당된 값을 임시 변수 또는 상수에 할당할 수 있습니다.
if let constantname = optionalName
{ //옵셔널 변수가 값이 있다면 언래핑해서 일반 상수 constantname에 대입하고
if문 실행 //값이 없다면 if문의 조건이 거짓이 되어 if문을 실행하지 않습니다. }
if var variablename = optionalName
{ //옵셔널 변수가 값이 있다면 언래핑해서 일반 변수 variblename에 대입하고
if문 실행 //값이 없다면 if문의 조건이 거짓이 되어 if문을 실행하지 않습니다. }
Swift 5.7부터는 if let x 라고 써도 됩니다.
//short form of if-let to the Optional Binding
옵셔널(Optional) 여러개를 동시에 푸는 방법.
x, y 둘중 하나라도 값이 없으면 nil를 출력합니다.
옵셔널(Optional) 선언은 변수명 뒤에 ?를 사용하는 것 이 외에 변수명 뒤에 !를 사용하여 선언할 수 있습니다.
변수명 뒤에 !를 사용한 것을 암묵적인 언래핑(implicitly unwrapped)이라고 합니다.
암묵적인 언래핑(implicitly unwrapped)은 옵셔널(Optional)로 사용할 수 없으면 자동으로 unwrap합니다.
타입설명예시 사용특징
Int? | 옵셔널 타입으로, 값이 있을 수도 있고 없을 수도 있음. | var number: Int? = nil | nil을 허용하며, 안전하게 언래핑 필요. |
Int! | 강제 언래핑된 옵셔널 타입으로, 값이 반드시 존재해야 함. | var number: Int! = 10 | nil일 경우 런타임 에러 발생. |
옵셔널(Optional)를 사용하는 이유
- 옵셔널 타입은 값을 갖지 않는다는 의미의 nil 값을 가질 수 있습니다.
- 옵셔널 변수에 nil을 할당하면 값이 없는(valueless state) 상태입니다.
- 옵셔널이 아닌 변수나 상수에는 nil을 할당할 수 없습니다.
- var myInt = nil // error
- var myInt : Int? = nil // OK
- var myInt : Int? // OK, 위와 같은 코드
- 옵셔널 변수는 초기화하지 않으면 자동으로 nil로 초기화
- var myString : String = nil // error
- let myConstant = nil // error, 옵셔널 형을 지정해야 합니다.
switf에서는 옵셔널 변수의 값이 nil이면 ?? 다음 값으로 할당됩니다. 옵셔널 변수의 값이 nil이 아니면 언래핑된 값이 나옵니다.