새소식

인기 검색어

TL

20/07/02 TL

  • -

/*

Array : 순서가 있는 리스트 집합

Dictionary : 키와 값의 쌍으로 이루어진 집합

Set : 순서가 없고, 멤버가 유일한 집합

*/

 

// 빈 Int 배열 생성

var integers: Array<Int> = Array<Int>()

// 뒤에 추가

integers.append(1)

integers.append(100)

 

// 들어있는지 확인

integers.contains(100)

integers.contains(99)

 

integers.remove(at : 0)

integers.removeLast()

integers.removeAll()

 

// 개수 세기

integers.count

 

// 이렇게도 배열 생성 가능

var strings: [String] = [String]()

var characters: [Character] = []

 

// let으로 선언하면 변경 불가능

let immutableArray = [1, 2, 3]

 

// 키가 String, 값이 Any인 Dictionary 생성

var anyDictionary: Dictionary<String, Any> = [String: Any]()

anyDictionary["someKey"] = "value"

anyDictionary["anotherKey"] = 100

 

// 값을 삭제

anyDictionary.removeValue(forKey: "anotherKey")

anyDictionary["someKey"] = nil

 

// 비어있는 Dictionary 생성

let emptyDictionary: [String: String] = [:]

let initializedDictionary: [String: String] = ["name": "SK", "gender": "male"]

 

// name에 해당되는 값이 안 들어있을 수도 있기 때문에 error 발생

// let someValue: String = initialziedDictionary["name"]

 

var integerSet: Set<Int> = Set<Int>()

// Set은 중복 허용 안 함

integerSet.insert(1)

integerSet.insert(100)

integerSet.insert(99)

integerSet.insert(99)

integerSet.insert(99)

integerSet.insert(99)

 

integerSet.contains(1)

 

integerSet.remove(100)

 

integerSet.count

 

let setA: Set<Int> = [1, 2, 3, 4, 5]

let setB: Set<Int> = [3, 4, 5, 6, 7]

 

// 합집합

let union: Set<Int> = setA.union(setB)

 

// 정렬

let sortedUnion: [Int] = union.sorted()

 

// 교집합

let intersection: Set<Int> = setA.intersection(setB)

 

// 차집합
let subtracting: Set<Int> = setA.subtracting(setB)

----------------------------------------------------------------

 

/* func 함수이름(매개변수1 이름: 매개변수1 타입, 매개변수2 이름: 매개변수2 타입 ...)
-> 반환타입(void도 가능 || 아니면 아예 반환타입을 안 써도 void) {
함수 구현부
return 반환값
}
*/

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

sum(a: 3, b: 5)

----------------------------------------------------------------------

// 기본값을 매개변수는 매개변수 목록 중 뒤에 위치하는 게 좋다.
/* func 함수이름(매개변수1 이름: 매개변수1 타입, 매개변수2 이름: 매개변수 기본값 ...) -> 반환타입 {
함수 구현부
return 반환값
}
*/

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

greeting(friend: "hana")
greeting(friend: "john", me: "eric")

// 전달인자 레이블은 함수를 호출할 때, 매개변수의 역할을 좀 더 명확하게 하거나 함수 사용자의
// 입장에서 표현하고자 할 때 좋다.

/* func 함수이름(전달인자 레이블 매개변수1 이름: 매개변수1 타입,
 전달인자 레이블 매개변수2 이름: 매개변수2 타입 ...) -> 반환타입 {
함수 구현부
return
}
*/

// 레이블까지 함수 이름으로 취급되기 때문에 위 greeting과는 다른 함수로 여겨진다.
// 함수 내부에서 전달인자 사용할 땐 매개변수 이름 사용.
func greeting(to friend: String, from me: String) {
print("Hello \(friend)! I'm (me)")
}

// 함수 호출할 땐 전달인자 레이블을 사용.
greeting(to: "hana", from: "SK")

// 가변 매개변수 : 전달받을 값의 개수를 모를 때 사용. 가변 매개변수는 함수 하나당 1개.
/* func 함수이름(매개변수1 이름: 매개변수1 타입, 전달인자 레이블 매개변수2 이름: 매개변수2 타입...)
-> 반환타입 {
함수 구현부
return
}
*/

func sayHelloToFriends(me String, friends: String...) -> String{
return "Hello \(friends)! I'm \(me)!"
}

print(sayHelloToFriends(me: "SK", friends: "hana", "eric", "wing"))

print(sayHelloToFriends(me: "SK"))

/*
스위프트는 함수형 프로그래밍 패러다임을 포함하는 다중 패러다임 언어이다.
스위프트의 함수는 일급객체이므로 변수, 상수 등에 저장이 가능하고
매개변수를 통해 전달할 수도 있다.
*/

// 함수의 타입을 표현할 땐 반환타입 생략할 수 없다.

// (매개변수1 타입, 매개변수2 타입 ...) -> 반환타입

var someFunction: (String, String) -> Void = greeting(to:from:)
someFunction("eric", "SK")

someFunction = greeting(friend:me:)
someFunction("eric", "SK")

func runAnother(function: (String, String) -> Void) {
function("jenny", "mike")
}

runAnother(function: greeting(friend:me:))

runAnother(function: someFunction)

 

-----------------------------------------------------------------------------

 


/*
if 조건 {
  문장
}
else if 조건 {
  문장
}
else {
  문장
}
*/

let someInteger = 100

// 소괄호는 생략할 수도 있다.
// 조건문엔 반드시 bool 타입만 들어와야 한다.
if (someInteger) < 100 {
  print("100 미만")
} else if someInteger > 100 {
  print("100 초과")
} else {
  print("100")
}

switch someInteger {
case 0:
  print("zero")
// 1이상 100미만
case 1..<100:
  print("1~99")
case 100:
  print("100")

// 101이상, int.max 미만

case 101...Int.max:

  print("over 100")

default:
  print("unknown")
}

// 명시적으로 break걸어주지 않아도, 하나의 case가 실행되면 break가 실행됨.
// fallthrough나 여러개로 연결하면 이전처럼 사용 가능.
switch "SK" {
case "jake":
  print("jake")
// fallthrough
case "mina", "jake":
  print("mina")
case "SK":
  print("SK!!")
// 전부 설정해주지 않았을 때는 default가 없으면 error를 발생한다.
default:
  print("unknown")
}

'TL' 카테고리의 다른 글

20/07/04 TL  (1) 2020.07.05
20/07/03 TL  (0) 2020.07.03
20/06/30 TL  (0) 2020.06.30
20/06/28 TL  (0) 2020.06.28
20/06/27 TL  (0) 2020.06.27
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.