iOS/🟠 Swift

Tuples - Tuples

woozzang 2020. 10. 25. 10:30

 

" ν•˜λ‚˜μ˜ μƒμˆ˜ ν˜Ήμ€ λ³€μˆ˜μ— μ—¬λŸ¬ 개의 값을 μ €μž₯ν•  수 μžˆμ„κΉŒ?"

 

기쑴의 Int, String κ³Ό 같은 νƒ€μž…μ€ ν•˜λ‚˜μ˜ μƒμˆ˜ ν˜Ήμ€ λ³€μˆ˜μ— ν•˜λ‚˜μ˜ 값을 μ €μž₯ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

이런 νƒ€μž…μ„ Scalar Type 이라고 ν•©λ‹ˆλ‹€.

 

Tuples 은 Compound Type μž…λ‹ˆλ‹€. μ—¬λŸ¬ 개의 값을 μ €μž₯ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

let myTuples = (1, "This", "is", "Awesome", 111)

 

Tuples 은 κ΄„ν˜Έλ₯Ό μ΄μš©ν•˜μ—¬ ν‘œν˜„ν•©λ‹ˆλ‹€.

κ΄„ν˜Έ μ•ˆμ˜ ν•˜λ‚˜ ν•˜λ‚˜μ˜ μš”μ†ŒλŠ” Member 라고 λΆ€λ¦…λ‹ˆλ‹€.

μœ„μ˜ myTuples λŠ” ( Int, String, String, String, Int ) ν˜•μ„ κ°–μŠ΅λ‹ˆλ‹€.

 

μ„ μ–Έλœ Tuples의 Members λŠ” μΆ”κ°€ 및 μ œκ±°κ°€ λΆˆκ°€λŠ₯ ν•©λ‹ˆλ‹€.

 

Tupels 의 Members λŠ” . (dot) 을 μ΄μš©ν•˜μ—¬ μ ‘κ·Όν•©λ‹ˆλ‹€.

 

Tuples λŠ” κ°’ ν˜•μ‹ μž…λ‹ˆλ‹€.

λ”°λΌμ„œ λ‹€λ₯Έ Tuples 에 λŒ€μž… μ‹œ 값이 λ³΅μ‚¬λ˜μ–΄ μ €μž₯λ©λ‹ˆλ‹€.


 

Mutability

 

μƒμˆ˜ Tuples λŠ” Immutable ν•©λ‹ˆλ‹€. ( λΆˆλ³€ νŠœν”Œ )

λ³€μˆ˜ Tuples λŠ” Mutable ν•©λ‹ˆλ‹€. ( κ°€λ³€ νŠœν”Œ )

 

λ‘˜μ˜ μ°¨μ΄λŠ” Members κ°’μ˜ λ³€κ²½ κ°€λŠ₯ μ—¬λΆ€ μž…λ‹ˆλ‹€.

 

let immutableTupels = ("can't", "change", "members")
immutbaleTupels.0 = "can"    // compile error

var mutableTuples = ("i", "can" , "lol")
mutableTuples.2 = "tho"    // ("i, "can", "tho")

 

Named Tuples VS. Unnamed Tuples

 

μœ„μ—μ„œ λ³΄μ—¬λ“œλ¦° μ½”λ“œλŠ” λͺ¨λ‘ Unnamed Tuples μž…λ‹ˆλ‹€.

Tuples 의 Members μ ‘κ·Ό λ°©λ²•μ—μ„œ 직관적이지 μ•Šμ•„, 가독성이 λ–¨μ–΄μ§‘λ‹ˆλ‹€.

 

μ•„λž˜λŠ” Named Tuples 와 Unnamed Tuples 의 Members μ ‘κ·Ό λ°©μ‹μ˜ 차이λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€.

/* Unnamed Tuples */
let guest1 = ("David", 19, "U.S")

guest1.0    // "David"
guest1.1    // 19
guest1.2    // "U.S"

/* Named Tuples */
let guest2 = (name: "Laura", age: 21, nationality: "France")
 
guest2.name         // "Laura"
guest2.age          // 21
guest2.nationality  // "France"

 

Named Tupels 의 Members μ ‘κ·Ό 방식이 더 μ§κ΄€μ μœΌλ‘œ λ³΄μž…λ‹ˆλ‹€.

Swift μ—μ„œλŠ” . (dot) 을 μ΄μš©ν•œ 문법을 Explicit Member Expression 이라고 λΆ€λ¦…λ‹ˆλ‹€.

 

 

 

끝.