슬슬 자바와 다른점들이 보이기 시작한다. 다 자바에도 존재하는 문법들이지만,
작성법이라던가 swift언어만의 안정성을 위한 옵셔널이라던가 다른 점들이 느껴진다.
func 함수명(파라미터 이름:데이터 타입) -> 반환 타입 {
return 반환
}
/*
func 함수명(파라미터 이름:데이터 타입) -> 반환 타입 {
return 반환
}
*/
func sum(a: Int, b: Int) -> Int {
return a + b
}
sum(a: 6, b: 3)
func hello() -> String {
return "hello"
}
hello()
주어진 조건에 따라서 에플리케이션을 다르게 실행할 때 사용
if, switch, guard
/*
if 조건식 {
실행할 구문
}
*/
let age = 12
if age < 19 {
print("미성년자 입니다.")
}
/*
if 조건식 {
조건식이 만족하면 해당 구문 실행
} else {
만족하지 않으면 해당 구문 실행
}
*/
if age > 19 {
print("성년.")
} else {
print("미성년.")
}
/*
switch 비교대상 {
case 패턴1:
case 패턴2, 패턴3:
default:
*/
let num = 2
switch num {
case -10...1:
print("1이하의 숫자")
case 2:
print("2")
default :
print("그 외")
}
반복적으로 코드가 실행되게 만드는 구문을 말한다.
for-in, while, repeat-while
/*
for 루프상수 in 순회대상 {
// 실행할 구문..
}
*/
for i in 1...4 {
print(i)
}
let array = [1,2,3,4,5]
for i in array {
print(i)
}
/*
while 조건식 {
//실행할 구문
*/
var number = 5
while number < 10 {
number+=1
}
/*
repeat {
//실행할 구문
} while 조건식
*/
var x = 6
repeat {
x+=2
} while x < 5
print(x)
값이 있을 수도 있고 없을 수도 있다.
값이 없을 경우엔 null?
swift에서 값이 없을 경우 nil이다.
var name: String?
//에러발생, 옵셔널 바인딩 필요
var optionalName: String? = "Seeun"
print(optionalName)
옵셔널 값을 바인딩 없이 변수처럼 사용하면 에러가 발생한다.
고로 옵셔널을 사용하려면 바인딩 처리가 필수이다.
강제 해제, 비강제 해제
컴파일러에 의한 자동 해제,
옵셔널의 묵시적 해제
/*
옵셔널 바인딩
*/
//강제 해제, 위험!
var number2: Int? = 3
print(number2!)
//비강제 해제, 안전
if let result1 = number2 {
print(result1)
} else {
}
//guard문을 통해서 옵셔널 해제 가능하다.
//이와 관련해선 따로 집중적으로 다루겠다.
//묵시적 해제
let string1 = "12"
var stringToInt: Int! = Int(string1)
print(stringToInt+1)