Any

Updated:

🔷 Any Type

Any 를 통해 어떠한 자료형도 받을 수 있습니다

자료형이 Any 인 배열

var things = [Any]()

struct Pet {
	var name: String
	var kind: String
}

things.append(0)
things.append(0.0)
things.append(42)
things.append(3.14159)
things.append("안녕하세요")
things.append((3.0, 5.0))
things.append(Pet(name: "댕댕이", kind: "강아지"))

// 요렇게 클로저 함수도 넣을 수 있습니다
things.append({(name: String) -> String in "안녕 친구들?!, \(name)"})

print(things) // [0, 0.0, 42, 3.14159, "안녕하세요", (3.0, 5.0), __lldb_expr_1.Pet(name: "댕댕이", kind: "강아지"), (Function)]

🔷 Any Type 배열 스위치문 처리

var things = [Any]()
struct Pet { var name: String }
struct Friend { var name: String }
things.append(0)
things.append(42)
things.append(Friend(name: "Jacob"))
things.append(Friend(name: "Emma"))
things.append("hello")
things.append((3.0, 5.0))
things.append(Pet(name: "Coco"))
things.append({ (name: String) -> String in "난 \(name) 이라고 해"})


// any 타입의 배열을 스위치 문으로 처리 가능합니다
for thing in things {
	switch thing {
	case 0 as Int:
		print("0이 들어 왔음")
	case let someInt as Int where someInt > 10:
		print("someInt \(someInt) 는 10 보다 크다")
	case is Friend: // 자료형이 Friend 라면
		print("찾은건 Friend 이다")
	case let someString as String:
		print("a String value of \"\(someString)\"")
	case let (x, y) as (Double, Double):
		print("an (x, y) point at \(x), \(y)")
	case let myDog as Pet:
		print("우리집 강아지 : \(myDog.name)")
	case let sayHi as (String) -> String:
		print(sayHi("Jacob"))
	default: print("Default")
	}
}

/*
 0이 들어 왔음
 someInt 42 는 10 보다 크다
 찾은건 Friend 이다
 찾은건 Friend 이다
 a String value of "hello"
 an (x, y) point at 3.0, 5.0
 우리집 강아지 : Coco
 난 Jacob 이라고 해
 */

Reference

Swift Tip of the day - 스위프트 기초 문법 - https://spangle-wedelia-2dc.notion.site/Swift-Tip-of-the-day-c428bfd990674bcfa2a4973e5d08c4eb

꼼꼼한 재은 씨의 스위프트 문법편 - https://book.jacobko.info/#/book/1186710233

Categories:

Updated:

Leave a comment