λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ“ 기둝

(14)
[TIL] 20231129 Protocol을 ν™œμš©ν•œ 좔상화 (μ½”λ“œ λ¦¬νŒ©ν† λ§) 이번주 μƒˆμ‹Ή κ³Όμ œμ—μ„œ PR을 올린 후에 아이디어가 λ– μ˜¬λΌ μ–΄μ œ ν”„λ‘œν† μ½œ 더 μž˜μ“°κΈ°!! 에 λŒ€ν•œ λ‚΄μš©μ„ μ–΄μ œ μ •λ¦¬ν–ˆλŠ”λ°, ν•΄λ‹Ή λ‚΄μš©μ„ μ μš©ν•΄μ„œ 였늘 μ½”λ“œ λ¦¬νŒ©ν† λ§μ„ ν•΄λ΄€λ‹€. μ£Όμš” λ³€κ²½ 사항 protocol extension 을 ν™œμš©ν•œ λ©”μ„œλ“œ κΈ°λ³Έ κ΅¬ν˜„ Playable ν”„λ‘œν† μ½œ extension을 톡해 κ³΅ν†΅μ μœΌλ‘œ μ‚¬μš©λ˜λŠ” λ©”μ„œλ“œλ₯Ό κΈ°λ³Έ κ΅¬ν˜„ν•΄ μΆ”μƒν™”ν–ˆμŠ΅λ‹ˆλ‹€. validateUserInput() - μ‚¬μš©μž μž…λ ₯ κ°’ μœ νš¨μ„± 검사 λ©”μ„œλ“œ μ‚¬μš©μž μž…λ ₯ κ°’ μœ νš¨μ„± 검사 둜직의 경우 κ°€μœ„λ°”μœ„λ³΄, 묡찌빠 두 κ²Œμž„μ—μ„œ λ™μΌν•˜κΈ° λ•Œλ¬Έμ— extension에 κΈ°λ³Έ κ΅¬ν˜„ν•¨μœΌλ‘œμ¨ 각 클래슀 λ‚΄μ—μ„œ 같은 κΈ°λŠ₯을 ν•˜λŠ” ν•¨μˆ˜λ₯Ό κ΅¬ν˜„ν•˜μ§€ μ•Šμ•„λ„ λ˜λ„λ‘ ν•΄μ„œ μ€‘λ³΅λœ μ½”λ“œλ₯Ό ν•˜λ‚˜λ‘œ λ¬Άμ—ˆμŠ΅λ‹ˆλ‹€..
[TIL] 20231128 ν”„λ‘œν† μ½œ μ’€ 더 잘 μ‚¬μš©ν•˜κΈ° OOP에 λŒ€ν•΄ κ³΅λΆ€ν•˜λ‹€λ³΄λ‹ˆ Swiftλ₯Ό ν†΅ν•œ 객체 지ν–₯ μ„€κ³„μ—μ„œ ν”„λ‘œν† μ½œμ΄ 맀우 μ€‘μš”ν•œ 역할을 ν•œλ‹€λŠ” κ±Έ μ•Œκ²Œ λ˜μ—ˆκ³  ν”„λ‘œν† μ½œμ„ 정말 잘 μ‚¬μš©ν•˜μ‹œλŠ” λΆ„λ“€μ˜ μ½”λ“œλ₯Ό 보며.. μš”μ¦˜ POP에 더 관심이 λ§Žμ•„μ§€κ³  ν”„λ‘œν† μ½œμ„ 적극적으둜 ν™œμš©ν•΄λ³΄λ €κ³  λ…Έλ ₯ν•˜κ³  있슴돠.. κ·Έλž˜μ„œ! μƒˆμ‹Ήμ—μ„œ 정말 κ°„λ‹¨ν•œ μ½˜μ†” ν”„λ‘œκ·Έλž¨μ„ 과제둜 κ΅¬ν˜„ν•˜κ²Œ λ˜μ—ˆλŠ”λ°, μ—¬κΈ°μ„œλ„ κ³΅ν†΅λœ 뢀뢄을 λ¬Άμ–΄ 객체λ₯Ό μΆ”μƒν™”ν•˜κ³  λ‹€ν˜•μ„±μ„ κ΅¬ν˜„ν•΄ μ΅œλŒ€ν•œ 객체 지ν–₯ 섀계λ₯Ό ν•˜κΈ° μœ„ν•΄ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹Ή.. PR은 λ‚ λ Έμ§€λ§Œ 근데 λ­”κ°€ 더더 묢을 수 μžˆμ„ 것 κ°™μ•  .. ν”„λ‘œν† μ½œ 더 잘 ν™œμš©ν•  수 μžˆμ„ 것 κ°™μ• .. 이런 생각에 ν”„λ‘œν† μ½œμ„ μ’€ 더 잘 μ‚¬μš©ν•  수 μžˆλŠ” 방법에 λŒ€ν•΄ μ°Ύμ•„λ³΄κ²Œ λ˜μ—ˆλ‹€! ν•„μš”ν•œ 뢀뢄에 λŒ€ν•΄ μ„œμΉ˜ν•΄μ„œ μ°Ύμ•„λ³Έ μ •..
[TIL] 20231124 Initalization (μ΄ˆκΈ°ν™”) μ΄ˆκΈ°ν™”λŠ” class, struct, enum의 μΈμŠ€ν„΄μŠ€μ˜ μ‚¬μš©μ„ μœ„ν•΄ μ€€λΉ„ν•˜λŠ” κ³Όμ • μƒˆλ‘œμš΄ μΈμŠ€ν„΄μŠ€λ₯Ό μ‚¬μš©ν•  μ€€λΉ„λ₯Ό ν•˜κΈ° μœ„ν•΄ μΈμŠ€ν„΄μŠ€μ˜ μ €μž₯ ν”„λ‘œνΌν‹°μ˜ μ΄ˆκΈ°κ°’μ„ μ„€μ •ν•˜λŠ” λ“±μ˜ 일을 ν•œλ‹€. μ΄λ‹ˆμ…œλΌμ΄μ € init ν”„λ‘œνΌν‹° μ΄ˆκΈ°κ°’μ„ μ§€μ •ν•˜κΈ° μ–΄λ €μš΄ κ²½μš°μ—λŠ” μ΄λ‹ˆμ…œλΌμ΄μ € init을 톡해 μΈμŠ€ν„΄μŠ€κ°€ κ°€μ Έμ•Ό ν•  μ΄ˆκΈ°κ°’μ„ 전달할 수 μžˆλ‹€. μ΄λ‹ˆμ…œλΌμ΄μ €λŠ” μƒˆλ‘œμš΄ μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 μžˆλŠ” νŠΉλ³„ν•œ λ©”μ„œλ“œκ°€ λ˜λŠ” 것 μ£Όμš” 역할은 μƒˆ μΈμŠ€ν„΄μŠ€κ°€ 처음 μ‚¬μš©λ˜κΈ° 전에 μ˜¬λ°”λ₯΄κ²Œ μ΄ˆκΈ°ν™”λ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜λŠ” 것이기 λ•Œλ¬Έμ— 값을 λ°˜ν™˜ν•˜μ§€ μ•ŠμŒ initializer의 μ’…λ₯˜ 클래슀의 λͺ¨λ“  ν”„λ‘œνΌν‹°λŠ” μ΄ˆκΈ°ν™” κ³Όμ •μ—μ„œ λ°˜λ“œμ‹œ μ΄ˆκΈ°κ°’μ΄ ν• λ‹Ήλ˜μ–΄μ•Ό 함 상속받은 ν΄λž˜μŠ€κ°€ μžˆλŠ” 경우, μƒμœ„ 클래슀의 ν”„λ‘œνΌν‹°λ„ λͺ¨λ‘..
[TIL] 20231123 ꡬ쑰체(struct)와 클래슀(class) ꡬ쑰체와 ν΄λž˜μŠ€λŠ” ν”„λ‘œκ·Έλž˜λ¨Έκ°€ 데이터λ₯Ό μš©λ„μ— 맞게 λ¬Άμ–΄ ν‘œν˜„ν•˜κ³ μž ν•  λ•Œ μœ μš©ν•¨ ꡬ쑰체와 ν΄λž˜μŠ€λŠ” ν”„λ‘œνΌν‹°μ™€ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ κ΅¬μ‘°ν™”λœ 데이터와 κΈ°λŠ₯을 κ°€μ§ˆ 수 μžˆλ‹€. ν΄λž˜μŠ€λ‚˜ ꡬ쑰체λ₯Ό μ •μ˜ν•œλ‹€ == ν•˜λ‚˜μ˜ μƒˆλ‘œμš΄ μ‚¬μš©μž μ •μ˜ 데이터 νƒ€μž…μ„ λ§Œλ“€μ–΄ μ£ΌλŠ” 것 ꡬ쑰체 vs. 클래슀 ꡬ쑰체와 클래슀 비ꡐ(κ³΅μ‹λ¬Έμ„œ λ²ˆμ—­, WWDC 자료 μ°Έκ³ ) 곡톡점 값을 μ €μž₯ν•  ν”„λ‘œνΌν‹°λ₯Ό μ •μ˜ν•  수 μžˆλ‹€. κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” λ©”μ„œλ“œλ₯Ό μ •μ˜ν•  수 μžˆλ‹€. μ„œλΈŒμŠ€ν¬λ¦½νŠΈλ₯Ό μ •μ˜ν•  수 μžˆλ‹€. μ΄λ‹ˆμ…œλΌμ΄μ €λ₯Ό 톡해 초기 μƒνƒœλ₯Ό μ„€μ •ν•  수 μžˆλ‹€. extension을 μ‚¬μš©ν•΄ κΈ°λŠ₯을 ν™•μž₯ν•  수 μžˆλ‹€. νŠΉμ • μ’…λ₯˜μ˜ ν‘œμ€€ κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” ν”„λ‘œν† μ½œμ„ μ€€μˆ˜ν•˜λŠ” 것이 κ°€λŠ₯ν•˜λ‹€. 차이점 class μ°Έμ‘° νƒ€μž…(Re..
[TIL] 20231122 Optional πŸ”½ Optionalκ³Ό Optional Unwrapping에 λŒ€ν•œ λ‚΄μš© 정리 [Swift] Optional μ•ˆλ…•ν•˜μ„Έμš” μ œμΈμž…λ‹ˆλ‹€ :) TIL을 μž‘μ„±ν•˜λ‹€κ°€ μ˜΅μ…”λ„μ— λŒ€ν•΄ 정리λ₯Ό ν•˜κ²Œ λ˜μ—ˆλŠ”λ°μš”, κ·Έλƒ₯ μ˜΅μ…”λ„ λ½€κ°œκΈ°λ‘œ μ œλŒ€λ‘œ 정리λ₯Ό ν•˜μž μ‹Άμ–΄μ„œ Optional에 λŒ€ν•œ κ³΅μ‹λ¬Έμ„œμ™€ κΉƒν—ˆλΈŒμ— μ˜€ν”ˆλœ Optional λ‚΄λΆ€ ꡬ janechoi.tistory.com + Optional νƒ€μž…μ˜ 값을 == μ—°μ‚°μžλ‘œ 비ꡐ할 수 μžˆλŠ” 이유? Optional의 κ°’ 비ꡐ가 κ°€λŠ₯ν•œ μ΄μœ λŠ” Swiftμ—μ„œ Optional을 κ΅¬ν˜„ν•  λ•Œ, ==, =! μ—°μ‚°μžλ₯Ό κ΅¬ν˜„ν•΄λ‘μ—ˆκΈ° λ•Œλ¬Έ Equatable ν”„λ‘œν† μ½œμ„ μ±„νƒν•˜μ—¬ == μ—°μ‚°μžλ₯Ό κ΅¬ν˜„ν•˜λŠ” λ‚΄λΆ€ μ½”λ“œλ₯Ό 확인할 수 있음 extension Optional: Equatable wh..
[TIL] 20231121 νƒ€μž…, μΈμŠ€ν„΄μŠ€, λ©”μ„œλ“œ, ν”„λ‘œνΌν‹° - νƒ€μž…: 개체λ₯Ό λŒ€ν‘œν•˜λŠ” ν‘œν˜„. 개체의 κ³΅λ™λœ νŠΉμ„±μ„ μΌλ°˜ν™”(더 λ‚˜μ•„κ°€ 좔상화)ν•˜μ—¬ ν‘œν˜„ν•œ 것 Swiftμ—μ„œ νƒ€μž…μ„ λ‚˜νƒ€λ‚΄λŠ” 방식: ꡬ쑰체, 클래슀, μ—΄κ±°ν˜•, ν”„λ‘œν† μ½œ - μΈμŠ€ν„΄μŠ€: νƒ€μž…μœΌλ‘œλΆ€ν„° μ‹€μ²΄ν™”λ˜μ–΄ λ©”λͺ¨λ¦¬μ— ν• λ‹Ήλœ 싀체 (클래슀, ꡬ쑰체, μ—΄κ±°ν˜•μ—μ„œ μƒμ„±λœ 객체) - λ©”μ„œλ“œ: μΈμŠ€ν„΄μŠ€ λ˜λŠ” νƒ€μž…μ΄ κ³΅ν†΅μ μœΌλ‘œ ν•  수 μžˆλŠ” ν–‰μœ„ - ν”„λ‘œνΌν‹°: 클래슀, ꡬ쑰체, μ—΄κ±°ν˜• 등에 κ΄€λ ¨λœ κ°’ ν΄λ‘œμ € vs. ν•¨μˆ˜ vs. λ©”μ„œλ“œ 이름 μ„€λͺ… ν΄λ‘œμ €(Closure) μ½”λ“œμ˜ 블둝 ν•¨μˆ˜(Function) 이름을 κ°–λŠ” ν΄λ‘œμ €λ‘œ νŠΉμ • νƒ€μž…μ— μ—°κ΄€λ˜μ§€ μ•Šκ³  λͺ¨λ“ˆ μ „μ²΄μ—μ„œ μ „μ—­μ μœΌλ‘œ μ‚¬μš©ν•  수 μžˆλŠ” μ½”λ“œμ˜ 블둝 λ©”μ„œλ“œ(Method) ν•¨μˆ˜ 쀑 ꡬ쑰체, 클래슀, μ—΄κ±°ν˜• λ“± νŠΉμ • νƒ€μž…μ— μ—°κ΄€λ˜μ–΄..