ν•¨μˆ˜

2022. 7. 23. 18:09Β·iOS/Swift 문법
λ°˜μ‘ν˜•

πŸ§‘‍πŸ’»μ΄λ²ˆ Swift μ‹œκ°„μ— λ°°μ›Œλ³Ό 것은  λ‹€μŒκ³Ό κ°™λ‹€. πŸ‘¨πŸ»‍πŸ’»

 

  • ν•¨μˆ˜
  • λ°˜ν™˜ κ°’ 
  • λ§€κ°œλ³€μˆ˜ 

1. ν•¨μˆ˜ 

 

print("Welcome to my app!")
print("By default This prints out a conversion")
print("chart from centimeters to inches, but you")
print("can also set a custom range if you want.")

 

 

λ§Œμ•½ μ‚¬μš©μžκ°€ λ§Œλ“œλŠ” 앱에 λŒ€ν•œ ν™˜μ˜ λ©”μ‹œμ§€λ₯Ό λ‹€μŒκ³Ό 같이 좜λ ₯ν•˜κ³  μ‹Άλ‹€κ³  ν•΄λ³΄μž. 

좜λ ₯ν•˜κ³  μ‹Άμ„λ•Œλ§ˆλ‹€ ctrl + c, vλ₯Ό ν•˜λ©΄ λ˜κΈ°μ•Ό ν•˜κ² μ§€λ§Œ 맀번 ν•˜κΈ°μ—λŠ” 무리가 μžˆλ‹€. 이 전체 μ½”λ“œμ— λŒ€ν•œ 이름을 뢙이고 이후에도 ν™œμš©ν•  수 μžˆλ‹€λ©΄ μ–΄λ–¨κΉŒ?? 그게 λ°”λ‘œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” λ°©λ²•μ΄μž ν•„μš”μ„±μ΄λ‹€. 

 

λ°”λ‘œ 그럼 μœ„ μ˜ˆμ‹œλ₯Ό ν•¨μˆ˜ ν˜•νƒœλ‘œ λ³€ν™˜ ν•΄λ³΄μž! 

 

func showWelcome() {
    print("Welcome to my app!")
    print("By default This prints out a conversion")
    print("chart from centimeters to inches, but you")
    print("can also set a custom range if you want.")
}
showWelcome()

 

ν•œλ²ˆ 해석 해보면 ν•¨μˆ˜μ˜ μ‹œμž‘μ„ ν‘œμ‹œν•΄μ£ΌλŠ” func ν‚€μ›Œλ“œλ‘œ μ‹œμž‘μ„ ν•˜λŠ”λ° 이의 경우 λ³€μˆ˜λͺ…κ³Ό 같이 ν•¨μˆ˜λͺ…에 ν•΄λ‹Ήλœλ‹€. λ”°λΌμ„œ λ³€μˆ˜λͺ…μ²˜λŸΌ ν•¨μˆ˜λͺ… λ˜ν•œ μ‚¬μš©μžκ°€ μ›ν•˜λŠ” λŒ€λ‘œ 생성 및 μˆ˜μ •μ΄ κ°€λŠ₯ν•˜λ‹€. 

 

μ—¬κΈ°μ„œ 맨 λ§ˆμ§€λ§‰ 쀄에 μžˆλŠ” showWelcome()을 ν•œλ²ˆ 깊게 μ‚΄νŽ΄λ³΄μž.

μ—¬κΈ°μ„œλŠ” μ•žμ„œ μƒμ„±ν•œ ν•¨μˆ˜λͺ…κ³Ό κ΄„ν˜Έλ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λŠ”κ²ƒμ„ 확인할 수 μžˆλŠ”λ° μ΄λŠ” ν•¨μˆ˜λ₯Ό 생성할 λ•Œμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ ν˜ΈμΆœν•  λ•Œλ„ μ‚¬μš©λ˜λŠ” 것이닀. 

 

그럼 ν•¨μˆ˜λ₯Ό 호좜 ν•˜λŠ” 과정을 μ•Œμ•˜λŠ”λ° κ΄„ν˜ΈλŠ” κ·Έλƒ₯ ν˜ΈμΆœν•  λ•Œ μ“°λŠ” μΉœκ΅¬μΈκ°€? 그건 μ•„λ‹ˆλ‹€. πŸ™…‍♀️

κ΄„ν˜ΈλŠ” μ—¬κΈ°μ„œ ν˜ΈμΆœν•œ ν•¨μˆ˜μ— λŒ€ν•œ κΈ°λŠ₯의 ꡬ성 μ˜΅μ…˜μ„ μΆ”κ°€ ν• λ•Œ μ‚¬μš©λœλ‹€. κ·Έλ₯Ό 톡해 μ‚¬μš©μžκ°€ μ§€μ •ν•˜λŠ” 데이터λ₯Ό μ „λ‹¬ν•˜λ©΄ κΈ°λŠ₯이 λ”μš± μœ μ—° ν•΄μ§„λ‹€κ³  ν•œλ‹€. 

 

func printTimesTables(number: Int) {
    for i in 1...10 {
        print("\(i) x \(number) is \(i * number)")
    }
}

printTimesTables(number: 5)

자 λ°”λ‘œ ν•œλ²ˆ μ‹€μ œλ‘œ ν•¨μˆ˜κ°€ μ‚¬μš©λ λ•Œμ˜ 예제λ₯Ό 톡해 뢄석해보고 μ΄ν•΄ν•΄λ³΄μž!

μ˜ˆμ œλŠ” 이전 μ‹œκ°„μ— λ°˜λ³΅λ¬Έμ—μ„œ λ‚˜μ˜¨ κ³±μ…‰κ²°κ³Όλ₯Ό λ³΄μ—¬μ£ΌλŠ” 예제인데 ν•¨μˆ˜ν˜•μœΌλ‘œ λ³€ν™˜ν•˜μ˜€λ‹€.  κ²°κ³ΌλŠ” 5에 λŒ€ν•΄ 1λΆ€ν„° 10κΉŒμ§€μ˜ 곱을 λ‚˜νƒ€λ‚Έλ‹€. 

 

number:Int κ°€ κ΄„ν˜Έ μ•ˆμ— 있고 λ§ˆμ§€λ§‰μ— ν•΄λ‹Ή number에 5λΌλŠ” μ •μˆ˜ 값을 μ§€μ •ν•΄μ£Όμ—ˆλ‹€.

κ΄„ν˜Έ μ•ˆμ„ μš°λ¦¬λŠ” 맀개 λ³€μˆ˜λΌκ³  ν•œλ‹€. μ‚¬μš©μž μ •μ˜ μ§€μ μœΌλ‘œ λˆ„κ΅°κ°€ 이 ν•¨μˆ˜λ₯Ό 호좜 λ§€κ°œλ³€μˆ˜μ—λŠ” μ •μˆ˜λ₯Ό 전달해야 ν•œλ‹€. 

 

λ”°λΌμ„œ printTimesTables()κ°€ 호좜될 λ•ŒλŠ” 숫자 5λ₯Ό λͺ…μ‹œμ μœΌλ‘œ μž‘μ„±ν•΄μ£Όμ–΄μ•Ό ν•˜λ©° ν•¨μˆ˜ 호좜의 μΌλΆ€λ‘œ 맀개 λ³€μˆ˜ 이름을 써야 ν•œλ‹€. 

그리고 Swiftμ—μ„œλŠ” 각 맀개 λ³€μˆ˜κ°€ 무엇을 ν•˜λŠ”μ§€μ— λŒ€ν•΄ μƒκΈ°μ‹œμΌœμ£ΌλŠ” 것 λ˜ν•œ 맀우 μ€‘μš”ν•˜λ‹€. 

 

 


 

2. λ°˜ν™˜ κ°’ 

 

ν•¨μˆ˜μ—μ„œλŠ” 기본적으둜 μžμ‹ μ˜ 값을 λ°˜ν™˜ ν•˜κΈ° μœ„ν•΄μ„œ 2κ°€μ§€κ°€ ν•„μš”ν•˜λ‹€.

 

1. Swiftμ—κ²Œ μ–΄λ–€ μ’…λ₯˜μ˜ 데이터가 λ‹€μ‹œ λ°˜ν™˜λ μ§€ μ•Œλ €μ€˜μ•Ό ν•œλ‹€. μ‚¬μš©μž ν•¨μˆ˜μ˜ μ‹œμž‘ κ΄„ν˜Έ μ•žμ— ν™”μ‚΄ν‘œμ™€ 데이터 μœ ν˜•μ„ μž…λ ₯ν•œλ‹€. 

2. 데이터λ₯Ό λ‹€μ‹œ λ°˜ν™˜ν•˜λ €λ©΄ 리턴 ν‚€μ›Œλ“œκ°€ ν•„μš”ν•˜λ‹€. 

 

μ•„λž˜ 예제λ₯Ό 보자!

func rollDice() -> Int {
    return Int.random(in: 1...6)
}

let result = rollDice()
print(result)

 

예제λ₯Ό 싀행해보면 random κ°’μœΌλ‘œ μ •ν•΄μ§„ λ²”μœ„ 1~6 μ‚¬μ΄μ˜ κ°’ 쀑 ν•˜λ‚˜κ°€ 좜λ ₯λœλ‹€. 

 

ν•¨μˆ˜λŠ” μ •μˆ˜λ₯Ό λ°˜ν™˜ν•΄μ•Ό ν•˜λ©° μ‹€μ œ 값은 λ°˜ν™˜ ν‚€μ›Œλ“œμ™€ ν•¨κ»˜ λ°˜ν™˜λœλ‹€. 

μ—¬κΈ°μ„œ μƒμ„±ν•œ ν•¨μˆ˜ rollDice()λŠ” ν”„λ‘œκ·Έλž¨μ˜ μ—¬λŸ¬ μœ„μΉ˜μ—μ„œ ν˜ΈμΆœν•  수 μžˆλ‹€. 

 

 

μ΄λ²ˆμ—λŠ” 쑰금 더 μ–΄λ €μš΄ λ‚œμ΄λ„λ‘œ ν•΄λ³΄μž

func areLettersIdentical(string1: String, string2: String) -> Bool {
    let first = string1.sorted()
    let second = string2.sorted()
    return first == second
}

 

ν•œ 쀄씩 λΆ„μ„ν•΄λ³΄μž! 

  1. μƒˆλ‘œμš΄ ν•¨μˆ˜ areLettersIdentical()을 μƒμ„±ν•œλ‹€. 
  2. ν•¨μˆ˜λŠ” string1κ³Ό string2의 두 κ°€μ§€ λ¬Έμžμ—΄ λ§€κ°œλ³€μˆ˜λ₯Ό ν—ˆμš©ν•œλ‹€.
  3. ν•¨μˆ˜λŠ” λΆ€μšΈμ„ λ°˜ν™˜ν•˜λ©°, νŠΉμ •ν•œ μ‹œμ μ—μ„œλŠ” true λ˜λŠ” falseλ₯Ό λ°˜ν™˜ν•˜κ²Œ λœλ‹€. 
  4. ν•¨μˆ˜ λ³Έλ¬Έ λ‚΄λΆ€μ—μ„œ 두 λ¬Έμžμ—΄ string1, string2λ₯Ό  μ •λ ¬ν•œ λ‹€μŒ == λ₯Ό μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ—΄μ„ λΉ„κ΅ν•œλ‹€. κ°™μœΌλ©΄ λ°˜ν™˜ κ°’μ΄μ—ˆλ˜ λΆ€μšΈν˜•μΈ trueλ‚˜ falseλ₯Ό 좜λ ₯ν•˜κ²Œ λœλ‹€. 

 

이제 μœ„ 예제λ₯Ό 쑰금 더 μ‹¬ν”Œν•˜κ²Œ λ§Œλ“€μ–΄λ³΄μž.

func areLettersIdentical(string1: String, string2: String) -> Bool {
    return string1.sorted() == string2.sorted()
}

μœ„μ—μ„œλŠ” string1κ³Ό string2λ₯Ό λͺ¨λ‘ μ •λ ¬ν•˜μ—¬ μ •λ ¬λœ 값을 첫 λ²ˆμ§Έμ™€ 두 번째 μƒˆ μƒμˆ˜μ— λ°”λ‘œ ν• λ‹Ήν•œλ‹€.

ν•˜μ§€λ§Œ μ΄λ²ˆμ—λŠ” first, second와 같은 μž„μ‹œ μƒμˆ˜λ₯Ό μƒλž΅ν•˜κ³  sorted()의 κ²°κ³Όλ₯Ό 직접 비ꡐ할 수 μžˆλ‹€.

 

 

μ½”λ“œκ°€ 많이 μ€„μ—ˆμ§€λ§Œ 더 μƒλž΅ν•  수 μžˆμ„κΉŒ? κ°€λŠ₯ν•˜λ‹€!! 이미 μ‚¬μš©μžκ°€ Swiftμ—κ²ŒλŠ” 이 ν•¨μˆ˜κ°€ λΆ€μšΈμ„ λ°˜ν™˜ν•΄μ€˜μ•Ό ν•œλ‹€κ³  ν–ˆκ³  ν•¨μˆ˜κ°€ ν•œ μ€„μ˜ μ½”λ“œλ§Œ κ°€μ§€κ³  μžˆμ„ λ•Œ return ν‚€μ›Œλ“œλ₯Ό μ•„μ˜ˆ μ œκ±°ν•  수 λ„μžˆλ‹€. μ΄λ ‡κ²Œ 말이닀.

func areLettersIdentical(string1: String, string2: String) -> Bool {
    string1.sorted() == string2.sorted()
}

 

ν•΄λ‹Ή ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜λŠ” κ±°λΆ€ν„° μƒλž΅μ„ ν•΄λ³΄λ©΄μ„œ μ½”λ“œλ₯Ό λ”μš± κ°„λž΅ν•˜κ²Œ λ§Œλ“€ 수 μžˆλŠ” 것은 더 μ—°μŠ΅μ΄ ν•„μš”ν•΄ 보인닀. 

 

 

 


3. ν•¨μˆ˜μ—μ„œ μ—¬λŸ¬ 값을 λ°˜ν™˜ν•˜λŠ” 방법

 

μ΄λ²ˆμ—λŠ” ν•¨μˆ˜μ—μ„œ μ—¬λŸ¬κ°’μ„ λ°˜ν™˜ν•˜λŠ” 법에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž 

기본적으둜 ν•¨μˆ˜μ—μ„œ  두 개 μ΄μƒμ˜ 값을 λ°˜ν™˜ν•˜λ €λ©΄ 배열을 μ‚¬μš©ν•΄λ³Ό 수 μžˆλ‹€. 

 

func getUser() -> [String] {
    ["Taylor", "Swift"]
}

let user = getUser()
print("Name: \(user[0]) \(user[1])") 

자 이 μ˜ˆμ œλŠ” 싀행해보면 κ²°κ³ΌλŠ” λ‚˜μ˜€μ§€λ§Œ 이 μ½”λ“œλŠ” ν•˜λ‚˜μ˜ 잠재적인 λ¬Έμ œμ μ„ κ°€μ§€κ³  μžˆλŠ”λ° user [0]와 user[1]이 무엇인지 κΈ°μ–΅ ν•˜κΈ°κ°€ μ–΄λ ΅λ‹€. 그리고 μž„μ˜λ‘œ λ°°μ—΄ λ‚΄λΆ€μ˜ 데이터λ₯Ό μˆ˜μ •ν•˜κ²Œ 되면 user[0]와 user [1]κ°€ μ•„μ˜ˆ 달라진 κ°’μ΄λ‚˜ μ—†λŠ” 값이 될 μˆ˜λ„ μžˆλ‹€. 

 

이것 말고도 μ•žμ„œ 배열을 곡뢀할 λ•Œ μ‚¬μš©ν•˜μ˜€λ˜ dictionary κ°œλ…μ„ μ΄μš©ν•˜μ—¬λ„ λ¬Έμ œλŠ” λ™μΌν•˜κ²Œ λ°œμƒν•œλ‹€. 

 

그럼 μ–΄λ–»κ²Œ ν•΄μ•Ό ν•˜λ‚˜μš”?πŸ€” 

μš°λ¦¬λŠ” μ—¬κΈ°μ„œ νŠœν”Œμ„ λ‹€μ‹œ ν•œλ²ˆ μ‚¬μš©ν•΄λ³΄κ²Œ λœλ‹€. λ°°μ—΄, dictionary 및 μ§‘ν•©κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ νŠœν”Œμ€ μ—¬λŸ¬ 개의 데이터λ₯Ό ν•˜λ‚˜μ˜ λ³€μˆ˜μ— 넣을 수 μžˆμ§€λ§Œ, λ‹€λ₯Έ μ˜΅μ…˜λ“€κ³ΌλŠ” λ‹€λ₯΄κ²Œ νŠœν”Œμ€ 크기가 κ³ μ •λ˜μ–΄μžˆλ‹€. λ˜ν•œ λ‹€μ–‘ν•œ 데이터 μœ ν˜•μ„ κ°€μ§ˆ 수 μžˆλ‹€. 

 

μ•„λž˜ 예제λ₯Ό 톡해 ν™•μΈν•΄λ³΄μž!

 

func getUser() -> (firstName: String, lastName: String) {
    (firstName: "Taylor", lastName: "Swift")
}

let user = getUser()
print("Name: \(user.firstName) \(user.lastName)")

항상 κ·Έλž¬λ“―μ΄ μˆœμ„œλŒ€λ‘œ λΆ„μ„ν•΄λ³΄μž.

 

  1. λ¨Όμ € λ°˜ν™˜ κ°’μ˜ μœ ν˜•μ€ 이름과 성이 각각 λ¬Έμžμ—΄λ‘œ 두 개의 λ¬Έμžμ—΄μ„ ν¬ν•¨ν•˜λŠ” νŠœν”ŒμΈ 것을 확인할 수 μžˆλ‹€. 
  2. νŠœν”Œ λ‚΄λΆ€μ˜ λ¬Έμžμ—΄μ€ 각각의 이름이 μžˆλŠ”λ° μ΄λŠ” dictionary에 μžˆλŠ” μž„μ˜μ˜ ν‚€ μ’…λ₯˜μ™€ λ‹€λ₯΄κ²Œ νŠœν”Œμ˜ 각 ν•­λͺ©μ— λŒ€ν•œ 이름이닀. 
  3. ν•¨μˆ˜ λ‚΄μ—μ„œ μ•½μ†ν•œ λŒ€λ‘œ λͺ¨λ“  μš”μ†Œλ₯Ό ν¬ν•¨ν•˜κ³  이름에 μ²¨λΆ€λœ νŠœν”Œμ˜ 값을 읽을 수 μžˆλ‹€. μ—¬κΈ°μ„œλŠ” firstName이 "Taylor"둜 λ˜μ–΄μžˆλ‹€.
  4. getUser()λ₯Ό ν˜ΈμΆœν•˜λ©΄ ν‚€ 이름(firstName, lastName)을 μ΄μš©ν•˜μ—¬ νŠœν”Œ 값을 읽을  수 μžˆλ‹€. 

 

<νŠœν”Œκ³Ό dictionary 차이점 >

이 과정을 보면 νŠœν”Œμ΄ dictionary에 λΉ„ν•΄ 쒋은 μž₯점을 κ°€μ§€κ³  μžˆλ‹€. νŠœν”Œμ€ μ–΄λ–€ 값이 μ‘΄μž¬ν•˜λŠ”μ§€, μ–΄λ–€ μœ ν˜•μ΄ μžˆλŠ”μ§€λ₯Ό μ •ν™•νžˆ μ§€μ •ν•˜λŠ” 반면 μ‚¬μ „μ—λŠ” μš°λ¦¬κ°€ μš”κ΅¬ν•˜λŠ” 값이 포함될 μˆ˜λ„ 있고? 아닐 μˆ˜λ„ μžˆλ‹€. 

 

 

 


이번 μ‹œκ°„ μ΄ν›„λΆ€ν„°λŠ” μ•žμ„  일주일 λ™μ•ˆ 배운 κΈ°λ³Έ 문법을 톡해 ν•¨μˆ˜λ‘œ λ„˜μ–΄κ°€λŠ” 첫 μ‹œκ°„μœΌλ‘œ μ‘°κΈˆμ”© λ¬Έλ²•μ μœΌλ‘œ μ–΄λ €μ›Œμ§€λŠ” 것이 λŠκ»΄μ§€μ§€λ§Œ 일단은 Go!🀩 

 

 

learning by repetition

 

https://www.hackingwithswift.com/100/swiftui/7

 

Day 7 – 100 Days of SwiftUI

Follow the 100 Days of SwiftUI and learn to build apps for free.

www.hackingwithswift.com

 

λ°˜μ‘ν˜•
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'iOS > Swift 문법' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

ν΄λ‘œμ € & ν›„ν–‰ ν΄λ‘œμ €  (0) 2022.08.08
λ§€κ°œλ³€μˆ˜  (0) 2022.07.24
반볡문  (0) 2022.07.15
쑰건문 & μ‚Όν•­ μ—°μ‚°μž  (0) 2022.07.14
Type annotations(νƒ€μž… μΆ”λ‘ )  (0) 2022.07.12
'iOS/Swift 문법' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • ν΄λ‘œμ € & ν›„ν–‰ ν΄λ‘œμ €
  • λ§€κ°œλ³€μˆ˜
  • 반볡문
  • 쑰건문 & μ‚Όν•­ μ—°μ‚°μž
NelchuPapa
NelchuPapa
  • NelchuPapa
    DEV_Larva
    NelchuPapa
  • 전체
    였늘
    μ–΄μ œ
  • 링크

    • πŸ’» Github
    • Develope (84)
      • Cloud (16)
        • AWS (14)
        • Linux (1)
        • Network (1)
      • CS (5)
      • iOS (28)
        • Swift 문법 (14)
        • 개인 ν”„λ‘œμ νŠΈ (7)
        • WWDC (2)
        • HIG (4)
      • Xcode (5)
        • Xcode 였λ₯˜ λͺ¨μŒμ§‘ (4)
        • μ‚¬μš©νŒ (1)
      • SwiftUI & UIKit (19)
        • SwiftUI의 λͺ¨λ“ κ²ƒ (1)
        • Tutorials (14)
        • Network (1)
        • 라이브러리 (1)
      • μž‘λ™μ‚¬λ‹ˆ (10)
        • Git&Github (7)
        • Etc (0)
        • 볼거리 (1)
        • My daily life (2)
  • 인기 κΈ€

  • 졜근 κΈ€

  • 졜근 λŒ“κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
NelchuPapa
ν•¨μˆ˜
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”