개발자의 삶/Swift

[Swift] 기초 문법1

Kedric 2023. 2. 8. 10:45
반응형

- 상수와 변수

// 상수
let a: Int = 20

// 변수
var b: Int = 100

 

 - 컬렉션 타입

// Array
// 데이터 타입의 값들을 순서대로 저장하는 리스트
var numbers: Array<Int> = Array<Int>()
var names: [String] = []
numbers.append(1) // 추가
numbers[0] // 조회
numbers.insert(1, at: 2) // index로 추가
numbers.remove(at:0) // index로 삭제

// Dictionary
// 순서없이 key, value 한 쌍으로 데이터를 저장하는 컬렉션 타입
var dic: Dictionary<String, Int> = Dictionary<String,Int>()
var dic: [String, Int] = [:]
var dic: [String, Int] = ["ked":1]
dic["kim"] = 2 // 추가 및 수정
dic.removeValue(forKey: "ked") // key값으로 삭제

// Set
// 같은 데이터 타입의 값을 순서없이 저장하는 리스트
var set: Set = Set<Int>()
set.insert(10)
set.remove(10)

 

- 함수선언

/*
func 함수명(파라미터 이름: 데이터 타입) -> 반환타입 {
	return 반환 값
}
*/

func sum(a: Int, b: Int) -> Int {
	return a+b
}
sum(a:5, b:3)

func hello() -> String {
	return "Hello"
}
hello()

func greeting(friend: String, me: String = "gunter") {
	print("Hello, \(frend)! I'm \(me)")
}
greeting(friend: "Albert")

// 전달인자 레이블
func sendMessage(from myName: String, to name: String) -> String {
	return "Hello \(name)! I'm \(myName)"
}
sendMessage(from: "Gunter", to: "Json")

// wildcard 식별자
func sendMessage(_ name: String) -> String {
	return "Hello \(name)"
}
sendMessage("ked")

// 가변 매개변수
func sendMessage(me: String, friends: String...) -> String {
	return "Hello \(friends)! I'm \(name)"
}
sendMessage(me: "ked", friends: "Json", "Alber", "Stella")

 

- 조건문

// if else 문
let age = 12

if age < 19 {
	print("미성년자 입니다.")
} else if age > 60 {
	print("노년입니다.")
} else {
	print("성년입니다.")
}

// switch 문
let temperature = 30

switch temperature {
case -20...9:
	print("겨울")
case 10...14:
	print("가을")
case 15...30:
	print("봄,여름")
default:
	print("해당없음")
}

 

- 반복문

// for 문
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 문
var x = 6

// 1번은 무조건 실행
repeat {
	x+=2
} while x < 5

 

- 옵셔널

var name: String? // nil

var optionalName: String? = "ked"

var requiredName: String = optionalName // 에러

print(optionalName) // Optional("ked")


// 옵셔널 바인딩

// 강제 해제
print(optionalName!) // "ked"

// 비강제 해제
if let result = optionalName {
	print(result) // "ked"
} else { // 값 추출 실패
}

func test() {
	let number: Int? = 5
    // 참이면 그대로 통과, 거짓이면 else문
    guard let result = number else { return }
    print(result)
}
test() // 5


// 묵시적 해제
let value: Int? = 6
if value == 6 {
	print("6")
} else {
	print("6이 아님")
}

let str = "12"
var stringToInt: Int? = Int(str) // 에러
print(stringToInt + 1)

var stringToInt: Int! = Int(str)
print(stringToInt + 1) // 13
반응형