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
Leave a comment