: 값을 저장할 수 있는 공간
let 상수명: 데이터 타입 = 값 //변경 불가능
var 변수명: 데이터 타입 = 값 //변경 가능
Int : 64bit 정수형
UInt: 부호가 없는 64bit 정수형
Float: 32bit 부동 소수점
Double: 64bit 부동 소수점
Bool: true, false 값
Character: 문자
String: 문자열
Any: 모든 타입을 지칭하는 키워드
-> 데이터 타입을 명시하지 않아도 값에 의해 타입을 추론한다
var number = 10 // INT
var numbers: Array<Int> = Array<Int>()
var numbers = [Int]()
var numbers: [Int] = []
numbers.append(1)
numbers.insert(3, at: 1)
numbers.remove(at: 0)
var dic: Dictionary<String, Int> = Dictionary<String, Int>()
var dic: [String: Int] = [:]
: 데이터 중복을 허용하지 않는다.
var set: Set = Set<Int>() // 축악형이 없다!
set.insert(10)
set.insert(20)
set.insert(20)
set // {10,20}
set.remove(20) // 순서가 없기때문에 저장된 값으로 삭제.
set // {10}
: 함수는 작업의 가장 작은 단위이자 코드의 집합입니다.
func 함수명(파라미터 이름: 데이터 타입) -> 반환 타입 {
return 반환 값
}
//전달인자 레이블
func 함수명(전달인자 레이블: 매개변수 이름: 메게변수 타입) -> 반환 타입 {
return 반환 값
}
//와일드카드
func 함수명(_ 매개변수 이름: 메게변수 타입) -> 반환 타입 {
return 반환 값
}
//가변 매개변수 - 배열로 넘겨 받을 수 있다. 단, 함수 당 하나만 가능
func 함수명(매개변수 이름: 메게변수 타입...) -> 반환 타입 {
return 반환 값
}
Swift는 함수형 프로그래밍 패러다임을 포함한 다중 프로그레밍 패러다임이기 때문에
Swift의 함수는 일급객체(First Class Citizen)이다.
: 주어진 조건에 따라서 에플리케이션을 다르게 동작하도록 하는 것이다.
-> if, switch, guard
if (){
}else if(){
}else {
}
switch 비교대상 {
case 패턴1:
case 패턴2, 패턴3:
default:
}
패턴에 비교연산자를 이용할 수 있다
let num = 7
switch num {
case 1...9:
default:
}
: 반복적으로 코드가 실행되게 만드는 구문을 말한다.
-> for-in, while, repeat-while
for 루프상수 in 순회대상 {
//실행할 구문
}
while 조건식 {
//실행할 구문
}
repeat{
//실행할 구문
}while 조건식
: 값이있을수도있고없을수도있다.
var name: String? //초기값이 설정되어 있지 않다면 nil로 저장되어있다
var optionalName: String? = "name" //초기닶 설정 가능
var requiredName: String = optionalName //ERROR!!! -> 옵셔널 바인딩이 필요하다
// 강제 해제
var number1: Int? = 3
print(number1!)
// 비강제 해제(옵셔널 바인딩)
var number: Int? = 3
guard let result = number else {return}
print(number2)
// 컴파일러에 의한 자동 해제
// 비교연산자로 다른 값과 비교하면 자동 해제
let val: Int? = 6
if val == 6 {
print("")
}
// 옵셔널의 묵시적 해제
let string = "12"
var stringToInt: Int! = Int(string) //string 변환되지 못해 nil일 수 있기떄문에 옵셔널에 저장
peinr(stringToInt + 1) // 13
대문자로 시작
초기화 구문
init(){}
deinit{}
공통점
차이점
:
Closure is the method that has no name.
Reference : https://docs.swift.org/swift-book/LanguageGuide/Closures.html