πŸ“š Programming

    [Swift] .\self ? ν‚€κ²½λ‘œ 톺아보기 (KeyPath)

    [Swift] .\self ? ν‚€κ²½λ‘œ 톺아보기 (KeyPath)

    forEachμ—μ„œ 자주 μ‚¬μš©ν•˜λŠ” .\self 무슨 의미일까 ? KeyPath ν‚€ κ²½λ‘œλŠ” ν”„λ‘œνΌν‹°μ˜ 값을 λ°”λ‘œ κ°€μ Έμ˜€μ§€ μ•Šκ³  μ–΄λ–€ ν”„λ‘œνΌν‹°μ˜ μœ„μΉ˜λ§Œ μ°Έμ‘°ν•˜λ„λ‘ ν•  수 μžˆλ‹€. κΈ€λ‘œλŠ” μ„€λͺ…ν•˜κΈ° μ–΄λ €μš΄ κ°œλ…μΈκ²ƒ κ°™λ‹€. λ°”λ‘œ 예제λ₯Ό 보자 ! SwiftλŠ” ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘œ ν•¨μˆ˜κ°€ μΌκΈ‰κ°μ²΄μ˜ 역할을 ν•  수 μžˆλ‹€. λ„ˆλ¬΄ 유λͺ…ν•œ 예제..인데 μ΄λ ‡κ²Œ λ³€μˆ˜λ‘œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 있고, μ°Έμ‘°λ₯Ό ν• λ‹Ήν•  수 μžˆμŠ΅λ‹ˆλ‹€ ! func someFunction(paramA: Any, paramB: Any){ print("SomeFunction called...") } var functionReference = someFunction(paramA:paramB:) functionReference("A","B") // someFuncti..

    [Swfit] ν”„λ‘œνΌν‹° κ°μ‹œμž / property observer (willSet & didSet)

    [Swfit] ν”„λ‘œνΌν‹° κ°μ‹œμž / property observer (willSet & didSet)

    Property Observer ν”„λ‘œνΌν‹° κ°’μ˜ λ³€ν™”λ₯Ό κ΄€μ°°ν•˜κ³ , μ €μž₯ ν”„λ‘œνΌν‹°μ— μΆ”κ°€ν•  수 μžˆλ‹€. willSet, didSet으둜 ν”„λ‘œνΌν‹°μ˜ κ°’ λ³€ν™”ν•  λ•Œ 호좜됨 -> κ°’μ˜ λ³€ν™”λ₯Ό λͺ¨λ‹ˆν„°λ§ ν•  수 μžˆλ‹€. πŸ“Œ μ™œ, μ–Έμ œ μ‚¬μš©ν•˜λŠ”μ§€ ? 주둜 iOSκ°œλ°œμ—μ„œ UIλ₯Ό μ—…λ°μ΄νŠΈ ν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€. willSet 값이 μ €μž₯되기 직전에 ν˜ΈμΆœλ©λ‹ˆλ‹€. willSet의 νŒŒλΌλ―Έν„°λŠ” λ°”λ€Œκ²Œ 될 λ³€μˆ˜μ˜ 값을 가지고 μžˆμŠ΅λ‹ˆλ‹€. var fruit : String = "apple" { willSet(newFruit){ print("과일이 \(fruit)μ—μ„œ \(newFruit)으둜 λ³€κ²½λ©λ‹ˆλ‹€.") } } νŒŒλΌλ―Έν„°λ₯Ό μ„€μ •ν•˜μ§€ μ•Šμ„ 경우 newValue둜 μžλ™ 지정 λ©λ‹ˆλ‹€. var fruit : String = "apple" { will..

    [Swift] μ˜΅μ…”λ„ 체이닝

    [Swift] μ˜΅μ…”λ„ 체이닝

    πŸ“Œ μ˜΅μ…”λ„ 체이닝 μ˜΅μ…”λ„ 체이닝은 κ΅¬μ‘°μ²΄λ‚˜, 클래슀 μ˜΅μ…”λ„μ„ μ‚¬μš©ν•˜λŠ”λ° κ·Έ μ˜΅μ…”λ„μ΄ 또 μ˜΅μ…”λ„μ„ κ°€μ§ˆ λ•Œ 즉, μ—°μ‡„μ μœΌλ‘œ μ˜΅μ…”λ„μ„ κ°€μ§€λŠ” κ²½μš°μ— μ‚¬μš©ν•  수 μžˆλ‹€. 예λ₯Όλ“€μ–΄ μ•„λž˜μ™€ 같은 ν΄λž˜μŠ€κ°€ μžˆλ‹€κ³  ν•˜μž. // κ°œμΈμ •λ³΄ class Person { var name : String var age : Int var phone : Phone? init(name : String, age : Int){ self.name = name self.age = age } } // 폰정보 class Phone { var number : String var type : Kind? init(number : String){ self.number = number } } // 폰쒅λ₯˜ class Kind { var brand : St..

    [Python] μ •λ ¬ν•¨μˆ˜ sort(), sorted() ν™œμš©

    정렬을 μœ„ν•΄ μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜μ— λŒ€ν•΄μ„œ μžμ„Ένžˆ μ•Œμ•„λ³΄μž. μ •λ ¬ν•¨μˆ˜λŠ” λ‚΄μž₯ν•¨μˆ˜κ³  λ¦¬μŠ€νŠΈμ—μ„œ μ‚¬μš©κ°€λŠ₯ν•˜λ‹€. πŸ“Œ sort() 리슀트λ₯Ό μ •λ ¬ν•˜κ³  μ‹Άμ„λ•Œ μ‚¬μš© (defalutλŠ” μ˜€λ¦„μ°¨μˆœ) arr = [1,5,2,7,8,3,4,9,6] arr.sort() print(arr) # [1, 2, 3, 4, 5, 6, 7, 8, 9] λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ arr = [1,5,2,7,8,3,4,9,6] arr.sort(reverse=True) print(arr) # [9, 8, 7, 6, 5, 4, 3, 2, 1] πŸ“Œ sorted() λ¦¬μŠ€νŠΈλŠ” 건듀지 μ•Šμ§€λ§Œ, μ •λ ¬λœ 값이 ν•„μš”ν•  λ•Œ μ‚¬μš© arr = [1,5,2,7,8,3,4,9,6] arr_sort = sorted(arr) print(arr) #[1, 5, 2, 7, 8, 3, 4..

    [Python] μ•ŒνŒŒλ²³ λ˜λŠ” 숫자 확인 (isalpha , isdigit)

    νŒŒμ΄μ¬μ€ μ°Έ 쒋은 ν•¨μˆ˜κ°€ λ§Žλ‹€. μ΄λ²ˆμ— μ‚¬μš©ν•΄ λ³Ό ν•¨μˆ˜λŠ” λ‚΄κ°€ κ²€μ‚¬ν•˜κ³ μž ν•˜λŠ” λ¬Έμžμ—΄μ΄ μ•ŒνŒŒλ²³μΈμ§€, μˆ«μžμΈμ§€ μ•Œκ³ μ‹Άμ„ λ•Œ μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜μ΄λ‹€. πŸ“Œ μ•ŒνŒŒλ²³ (isalpha) 문자, λ¬Έμžμ—΄ λͺ¨λ‘ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€. (ν•œκΈ€λ„ κ°€λŠ₯) 단, λ¬Έμžμ—΄μ—μ„œλŠ” λ¬Έμžκ°€μ•„λ‹Œκ²ƒμ΄ ν•œκ°œλΌλ„ 있으면 flaseλ₯Ό λ°˜ν™˜ν•œλ‹€. (ex 특수문자, 숫자, 띄어쓰기) ex1 = "A" ex2 = "a" ex3 = "example" ex4 = "μ•ˆλ…•" ex5 = "hi hello" ex6 = "hi123" print(ex1.isalpha()) #True print(ex2.isalpha()) #True print(ex3.isalpha()) #True print(ex4.isalpha()) #True print(ex5.isalpha()) #False ..

    [Swift] class 상속(Inheritance)

    [Swift] class 상속(Inheritance)

    상속은 μ˜€λ‘œμ§€ '클래슀' μ—μ„œλ§Œ κ°€λŠ₯ν•˜λ‹€. swiftμ—μ„œ 상속은 ν•œ 번만 κ°€λŠ₯ν•˜λ‹€. (== 단일상속) πŸ“Œ κΈ°λ³Έκ΅¬ν˜„ class Name : 상속받을class { // code } πŸ“Œ 상속 상속을 예제λ₯Ό μ•žμ„Έμ›Œ μ„€λͺ…해보면, 이름과 λ‚˜μ΄λ₯Ό ν”„λ‘œνΌν‹°λ‘œ 가지고, κ·Έ 값을 좜λ ₯ν•˜λŠ” λ©”μ†Œλ“œλ₯Ό κ°€μ§€λŠ” ν΄λž˜μŠ€λŠ” λ‹€μŒκ³Ό κ°™λ‹€. class Info { var name = "" var age = "" func print_name() { print("λ‚΄ 이름은 \(name) μž…λ‹ˆλ‹€.") } func print_age() { print("λ‚˜λŠ” \(age)μ‚΄ μž…λ‹ˆλ‹€.") } } μœ„ 클래슀의 정보λ₯Ό λͺ¨λ‘ κ°€μ§€λ©΄μ„œ μ™Έκ΅­μ–΄λ‘œλ„ 좜λ ₯ν•  수 있게 ν•˜κ³ μ‹Άλ‹€λ©΄ 상속을 μ΄μš©ν•  수 μžˆλ‹€. 즉, μƒμ†μ΄λž€ λ‹€λ₯Έ 클래슀의 정보λ₯Ό λͺ¨λ‘ κ°€μ§€λŠ” 것을 의미..

    [Python] input λŒ€μ‹  sys.stdin.readline() μ“°μž

    python으둜 μ½”λ”©ν…ŒμŠ€νŠΈ (특히 λ°±μ€€) ν’€λ‹€κ°€ μ‹œκ°„μ΄ˆκ³Όλ‘œ 문제 κ²ͺ은 뢄듀은 속도 κ°œμ„ μ„ μœ„ν•΄μ„œ sys.stdin.readline()을 μ“°μž input이 느린 이유 1 기쑴에 μ“°λ˜ input은 κ΄„ν˜Έμ•ˆμ— prompt messageλ₯Ό μž…λ ₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€. name = input("이름을 μž…λ ₯ν•˜μ„Έμš” : ") κ·Έλ ‡κΈ° λ•Œλ¬Έμ— prompt messageκ°€ μ—†λŠ” readline()κ³Ό μƒλŒ€μ μœΌλ‘œ μ‹œκ°„ 차이가 λ°œμƒν•©λ‹ˆλ‹€. input이 느린 이유 2 μ•„λž˜μ™€ 같이 μž…λ ₯ ν›„ 같은 λ¬Έμžμ—΄μ„ μž…λ ₯ν•˜λ©΄, import sys input = input() print(input) print("=====") readline = sys.stdin.readline() print(readline) print("=====") λ‹€μŒκ³Ό 같은 κ²°κ³Όκ°€..

    [Swift] property(ν”„λ‘œνΌν‹°)

    [Swift] property(ν”„λ‘œνΌν‹°)

    ν•΄λ‹Ή ν¬μŠ€νŒ…μ€ μ•„λž˜ λ§ν¬μ—μ„œ κ°’νƒ€μž… & μ°Έμ‘°νƒ€μž…μ„ λ¨Όμ € ν•™μŠ΅ν•œ 후에 μ½λŠ” 것을 ꢌμž₯ν•©λ‹ˆλ‹€. https://990427.tistory.com/71 μ „ κ²Œμ‹œλ¬Όλ“€μ—μ„œ ν΄λž˜μŠ€λ‚˜ ꡬ쑰체에 μ“°λŠ” λ³€μˆ˜λ‚˜ μƒμˆ˜λ₯Ό ν”„λ‘œνΌν‹°λΌκ³  λΆˆλ €μ—ˆλ‹€. ν”„λ‘œνΌν‹°λž€ 클래슀, ꡬ쑰체, μ—΄κ±°ν˜•μ— κ΄€λ ¨λœ 값을 λœ»ν•œλ‹€. (λŒ€μΆ© μœ„μ—λ§λ„ 맞음) ν”„λ‘œνΌν‹°λŠ” 총 3가지 ν˜•νƒœλ‘œ μ‘΄μž¬ν•˜λŠ”λ°, ν•˜λ‚˜μ”© μ•Œμ•„λ³΄λ„λ‘ ν•˜μž. Stored Property (μ €μž₯ ν”„λ‘œνΌν‹°) μ €μž₯ ν”„λ‘œνΌν‹°λŠ” 말 κ·ΈλŒ€λ‘œ 값을 μ €μž₯ν•˜λŠ” ν”„λ‘œνΌν‹°λ₯Ό μ˜λ―Έν•œλ‹€. μš°λ¦¬κ°€ 읡히 μ•Œκ³ μžˆλŠ” class, structμ•ˆμ— μ‘΄μž¬ν•˜λŠ” λ³€μˆ˜λ‚˜ μƒμˆ˜λŠ” 기본적으둜 μ €μž₯ ν”„λ‘œνΌν‹°μ΄λ‹€. class ex1 { let num = 0 var str = "hello" } struct ex2 { var num = 1 let..

    [Swift] ν΄λ‘œμ €(Closure)의 λͺ¨λ“ κ²ƒ

    [Swift] ν΄λ‘œμ €(Closure)의 λͺ¨λ“ κ²ƒ

    λ³Έ κ²Œμ‹œλ¬Όμ€ ν΄λ‘œμ €μ˜ κΈ°λ³Έ λΆ€ν„° μ‹¬ν™”κΉŒμ§€ λͺ¨λ‘ 닀루고 μžˆμŠ΅λ‹ˆλ‹€. swift ν•¨μˆ˜μ˜ 기본을 λ‹€λ£¨μ—ˆλ‹€κ³  κ°€μ •ν•˜κ³  μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€. Closure / ν΄λ‘œμ € ν΄λ‘œμ €λž€? 보톡은 읡λͺ…ν•¨μˆ˜λ₯Ό λœ»ν•œλ‹€. ν•˜μ§€λ§Œ named ν•¨μˆ˜λ„ ν΄λ‘œμ €μ— μ†ν•œλ‹€λŠ” 사싀 ! ν΄λ‘œμ €λŠ” named Closure & unnamed Closure 두가지λ₯Ό ν¬ν•¨ν•˜κ³  μžˆλ‹€. μš°λ¦¬κ°€ μ•Œκ³  μžˆλŠ” 일반적인 ν•¨μˆ˜λŠ” named Closure이닀. func NameClosure() { print("I have a name") } 읡λͺ…ν•¨μˆ˜λŠ” μ •ν™•νžˆλŠ” unnamed Closureμ΄μ§€λ§Œ, 보톡 unnamed을 μƒλž΅ν•˜κ³  κ·Έλƒ₯ ν΄λ‘œμ €λΌκ³  λΆ€λ₯Έλ‹€. 즉, ν΄λ‘œμ € = 읡λͺ…ν•¨μˆ˜λΌκ³  ν†΅μƒμ μœΌλ‘œ μƒκ°ν•˜λ©΄ 될듯 ? ( ν΄λ‘œμ €λŠ” 읡λͺ…ν•¨μˆ˜μ΄μ§€λ§Œ, 1κΈ‰ 객체 ν•¨μˆ˜μ˜ νŠΉμ„±μ„ 가진닀. ) μš”..

    [Swift] μ—΄κ±°ν˜•(Enumerations)

    λ³΄ν˜Έλ˜μ–΄ μžˆλŠ” κΈ€μž…λ‹ˆλ‹€.