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

λΆ„λ₯˜ 전체보기384

[Swift] μ΅μŠ€ν…μ…˜ (Extensions) μ΅μŠ€ν…μ…˜ (Extensions) μ΅μŠ€ν…μ…˜μ„ μ΄μš©ν•΄ 클래슀, ꡬ쑰체, μ—΄κ±°ν˜• ν˜Ήμ€ ν”„λ‘œν† μ½œ νƒ€μž…μ— κΈ°λŠ₯을 μΆ”κ°€ κ°€λŠ₯ μ΅μŠ€ν…μ…˜μ€ νƒ€μž…μ— μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•  수 μžˆμ§€λ§Œ, μ˜€λ²„λΌμ΄λ“œλŠ” ν•  수 μ—†μŒ κ³„μ‚°λœ μΈμŠ€ν„΄μŠ€ 속성 및 계산 μœ ν˜• 속성 μΆ”κ°€ μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œ 및 νƒ€μž… λ©”μ„œλ“œ μ •μ˜ μƒˆ μ΄λ‹ˆμ…œλΌμ΄μ € 제곡 Subscript μ •μ˜ μƒˆ 쀑첩 νƒ€μž… μ •μ˜ 및 μ‚¬μš© κΈ°μ‘΄ νƒ€μž…μ„ ν”„λ‘œν† μ½œμ— 맞게 μ„€μ • extension Int { var add: Int { return self + 100 } var sub: Int { return self - 10 } var mul: Int { return self * 10 } var div: Int { return self / 5 } } let addition = 3.add print("Ad.. 2023. 2. 6.
[Swift] ν”„λ‘œν† μ½œ (Protocol) ν”„λ‘œν† μ½œ (Protocol) νŠΉμ • μž‘μ—…μ΄λ‚˜ κΈ°λŠ₯에 μ ν•©ν•œ λ©”μ„œλ“œ, ν”„λ‘œνΌν‹° 및 기타 μš”κ΅¬μ‚¬ν•­μ˜ ‘약속’을 μ •μ˜ 클래슀(class), ꡬ쑰체(struct), μ—΄κ±°ν˜•(enum)μ—μ„œλŠ” μ–΄λ– ν•œ ν”„λ‘œν† μ½œμ„ μ±„νƒν•˜μ—¬ ν•΄λ‹Ή ν”„λ‘œν† μ½œμ˜ μš”κ΅¬μ‚¬ν•­μ„ μ‹€μ œλ‘œ κ΅¬ν˜„ κ°€λŠ₯ ν”„λ‘œν† μ½œμ˜ μš”κ΅¬μ‚¬ν•­μ„ μΆ©μ‘±μ‹œν‚€λŠ” λͺ¨λ“  νƒ€μž…μ€ ν•΄λ‹Ή ν”„λ‘œν† μ½œμ„ μ€€μˆ˜ν•œλ‹€ ν˜Ήμ€ λ”°λ₯Έλ‹€κ³  함 ν”„λ‘œν† μ½œμ„ μ±„μš©ν•œ ν˜•μ‹μ€ μš”κ΅¬μ‚¬ν•­μ„ λ°˜λ“œμ‹œ λͺ¨λ‘ κ΅¬ν˜„ν•΄μ•Ό 함 ν”„λ‘œν† μ½œμ€ ν”„λ‘œν† μ½œ κ°„ 상속을 μ§€μ›ν•˜λ©°, ν΄λž˜μŠ€μ™€ 달리 닀쀑 상속도 지원 ν”„λ‘œν† μ½œ μ±„νƒν•˜κΈ° 클래슀, ꡬ쑰체, μ—΄κ±°ν˜•μ—μ„œ μ •μ˜ν•œ ν”„λ‘œν† μ½œμ„ μ±„νƒν•˜κΈ° μœ„ν•΄μ„œλŠ” 콜둠(:)을 μ‚¬μš© ν•˜λ‚˜μ˜ νƒ€μž…μ—μ„œ λ‹€μˆ˜μ˜ ν”„λ‘œν† μ½œμ„ μ±„νƒν•˜κΈ° μœ„ν•΄μ„œλŠ” 콀마(,)λ₯Ό μ‚¬μš© ν΄λž˜μŠ€μ—μ„œ 상속과 ν”„λ‘œν† μ½œ 채택을 λ™μ‹œμ— ν•˜λ €λ©΄ μƒμ†λ°›μœΌλ €λŠ” 클래슀λ₯Ό .. 2023. 2. 6.
[Swift] assert와 guard assert νŠΉμ • 쑰건을 μ²΄ν¬ν•˜κ³ , 쑰건이 μ„±λ¦½λ˜μ§€ μ•ŠμœΌλ©΄ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜κ²Œ ν•  수 μžˆλŠ” ν•¨μˆ˜ assert ν•¨μˆ˜λŠ” 디버깅 λͺ¨λ“œμ—μ„œλ§Œ λ™μž‘ν•˜κ³  주둜 디버깅 쀑 쑰건의 검증을 μœ„ν•˜μ—¬ μ‚¬μš© var value = 0 assert(value == 0) value = 2 assert(value == 0, "값이 0이 μ•„λ‹™λ‹ˆλ‹€.") 첫 번째 assertλŠ” 참이기 λ•Œλ¬Έμ— 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•ŠμŒ 두 번째 assertλŠ” 거짓이기 λ•Œλ¬Έμ— λŸ°νƒ€μž„μ—λŸ¬κ°€ λ°œμƒ Assertion failed: 값이 0이 μ•„λ‹™λ‹ˆλ‹€. guard λ¬Έ 쑰건을 κ²€μ‚¬ν•˜μ—¬ κ·Έλ‹€μŒμ— μ˜€λŠ” μ½”λ“œλ₯Ό μ‹€ν–‰ν• μ§€ 말지 κ²°μ •ν•˜λŠ” ꡬ문 guard을 μ‚¬μš©ν•˜μ—¬ 쑰건이 μ„±λ¦½ν•˜μ§€ μ•Šμ„ μ‹œ νŠΉμ • μ‹€ν–‰ ꡬ문을 λΉ λ₯΄κ²Œ μ’…λ£Œ guard의 else 블둝 λ‚΄λΆ€μ—λŠ” νŠΉμ • μ½”λ“œ 블둝을 μ’…λ£Œν•˜λŠ” .. 2023. 2. 6.
[Swift] νƒ€μž… μΊμŠ€νŒ… νƒ€μž… μΊμŠ€νŒ… (Type Casting) μΈμŠ€ν„΄μŠ€μ˜ "νƒ€μž…"을 ν™•μΈν•˜κ±°λ‚˜, ν•΄λ‹Ή μΈμŠ€ν„΄μŠ€λ₯Ό 슈퍼 ν΄λž˜μŠ€λ‚˜ ν•˜μœ„ 클래슀둜 μ·¨κΈ‰ν•˜λŠ” 방법 Swiftμ—μ„œ νƒ€μž… μΊμŠ€νŒ…μ€ "is"λ‚˜ "as" μ—°μ‚°μžλ‘œ κ΅¬ν˜„ νƒ€μž… μΊμŠ€νŒ…μ„ μ‚¬μš©ν•˜μ—¬ νƒ€μž…μ΄ ν”„λ‘œν† μ½œμ— μ ν•©ν•œμ§€ 여뢀도 확인 κ°€λŠ₯ is νƒ€μž…μ„ μ²΄ν¬ν•˜λŠ” μ—°μ‚°μž λŸ°νƒ€μž„ μ‹œμ μ— μ‹€μ œ 체크가 이루어짐 λ°˜ν™˜ 값은 Bool ν˜• ν‘œν˜„μ‹μ΄ Typeκ³Ό λ™μΌν•˜κ±°λ‚˜, ν‘œν˜„μ‹μ΄ Type의 μ„œλΈŒν΄λž˜μŠ€μΈ 경우 Trueλ₯Ό λ°˜ν™˜ 이 μ™Έμ—λŠ” False λ°˜ν™˜ //1 let char: Character = "A" char is Character // true char is String // false //2 class Animal { } class Dog: Animal { } let dog: Dog = ... 2023. 2. 6.
[Swift] 클래슀(Class)와 ꡬ쑰체(Struct) 클래슀(Class) 클래슀λ₯Ό μ •μ˜ν•˜μ—¬ 객체λ₯Ό λ§Œλ“€κ³  μ‚¬μš© κ°€λŠ₯ 클래슀λ₯Ό λ§Œλ“€μ–΄ ν΄λž˜μŠ€μ—μ„œ μƒμ„±λœ 객체인 μΈμŠ€ν„΄μŠ€λ₯Ό λ§Œλ“€μ–΄ μ‚¬μš© 클래슀 μ•ˆμ˜ λ³€μˆ˜ ν”„λ‘œνΌν‹°(Property)와 클래슀 μ•ˆμ˜ ν•¨μˆ˜ λ©”μ„œλ“œ(Method)둜 ꡬ성 class Name { var name = "Hyebin" //ν”„λ‘œνΌν‹° //λ©”μ„œλ“œ func my_name() { print("my name is \(name)") } } //μΈμŠ€ν„΄μŠ€ 생성 let hyebin : Name = Name() print(hyebin.name)// Hyebin hyebin.my_name()// my name is Hyebin hyebin.name = "yoo" hyebin.my_name()// my name is yoo 클래슀 μ΄ˆκΈ°ν™” (Initialization).. 2023. 2. 6.
[Swift] μ˜΅μ…”λ„ (Optional) μ˜΅μ…”λ„(Optional) 값이 μžˆμ„ μˆ˜λ„ 있고 없을 μˆ˜λ„ μžˆλŠ” λ³€μˆ˜ 값이 μ—†λŠ” 경우λ₯Ό λ‚˜νƒ€λ‚Ό λ•Œμ—λŠ” nil을 μ‚¬μš© λ³€μˆ˜ μ •μ˜ν•  λ•Œ νƒ€μž… μ–΄λ…Έν…Œμ΄μ…˜μ— λ¬ΌμŒν‘œ(?)λ₯Ό λΆ™μ—¬ μ •μ˜ Optional(value) ν˜•νƒœλ‘œ 좜λ ₯ μ˜΅μ…”λ„μ— μ΄ˆκΉƒκ°’μ„ μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ 기본값은 nil var name: String? print(name) //nil name = "hyebin" print(name) //Optional("hyebin") μ˜΅μ…”λ„λ‘œ μ •μ˜ν•œ λ³€μˆ˜λŠ” μ˜΅μ…”λ„μ΄ μ•„λ‹Œ λ³€μˆ˜μ™€λŠ” 닀름 var optional_name: String? = "hyebin" let name: String = optional_name Value of optional type 'String?' must be unwrapped to a value of .. 2023. 2. 6.
λ°˜μ‘ν˜•