λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
🍏 Today I Learned/Swift 문법

[Swift] ν”„λ‘œνΌν‹°μ™€ 좜λ ₯, ν•¨μˆ˜

by Joseph Seong 2023. 12. 4.

 

 

 

1.  ν• λ‹Ή μ—°μ‚°μž

  • A = B
    • "B 값을 A에 ν• λ‹Ήν•œλ‹€"λŠ” μ˜λ―Έμ΄λ‹€.
    • μš°λ³€μ— μžˆλŠ” 값을 μ’Œλ³€μ˜ λ³€μˆ˜μ— ν• λ‹Ήν•œλ‹€λŠ” μ˜λ―Έμ΄λ‹€.
let color = "purple"
print(color)        // 좜λ ₯κ°’ : purple
var foodName = "사과"
var fruitName = "포도"
foodName = fruitName
print(foodName)     // 좜λ ₯κ°’ : 포도
// λ³€μˆ˜ μ—¬λŸ¬κ°œλ₯Ό ν•œλ²ˆμ— μ„ μ–Έν•˜κ³  값을 ν• λ‹Ήν•˜λŠ” 방법
var a = 1, b = 2, c = 3

 

2.  μ €μž₯ ν”„λ‘œνΌν‹° ( Stored Property )

  • let
    • λ³€κ²½ν•  수 μ—†λŠ” μƒμˆ˜(Constant)λ₯Ό μ„ μ–Έν•  λ•Œ μ‚¬μš©ν•œλ‹€.
let name = "철수"
name = "영희"     // 🚨Error

 

  • var
    • λ³€κ²½ν•  수 μžˆλŠ” λ³€μˆ˜(Variable)λ₯Ό μ„ μ–Έν•  λ•Œ μ‚¬μš©ν•œλ‹€.
var age = 10
age = 50

 

3.  μ—°μ‚° ν”„λ‘œνΌν‹° ( Computed Property )

  • var
    • μ—°μ‚° ν”„λ‘œνΌν‹°λŠ” κ·Έ λ•Œ κ·Έ λ•Œ κ³„μ‚°ν•œ 값을 μ•Œλ €μ£ΌκΈ° λ•Œλ¬Έμ— let은 λΆˆκ°€λŠ₯ν•˜λ‹€.
    • 맀번 κ³„μ‚°ν•˜κΈ° λ•Œλ¬Έμ— 값을 μ €μž₯ν•˜μ§€ μ•ŠλŠ”λ‹€.
var x = 10
var y = 20

// sum이 μ—°μ‚° ν”„λ‘œνΌν‹°
var sum: Int {
    get {
        return x + y
    }
    set {
        sum = x + y
    }
}

print(sum)
// 좜λ ₯κ°’: 30

// get, set 쀑 get만 ν•„μš”ν•œ κ²½μš°μ—λŠ” ν‚€μ›Œλ“œ μƒλž΅ κ°€λŠ₯
var sum1: Int {
		return x + y
}

// μ•„λž˜μ™€ 같이 더 μΆ•μ•½ κ°€λŠ₯
var sum2: Int {
		x + y
}

 

4.  문자 보간법

  • String Interpolation
  • \() λ₯Ό μ‚¬μš©ν•˜μ—¬ ν‘œν˜„ν•œλ‹€.
  • λ³€μˆ˜ λ˜λŠ” μƒμˆ˜ λ“±μ˜ 값을 λ¬Έμžμ—΄ 내에 λ‚˜νƒ€λ‚΄κ³  싢을 λ•Œ μ‚¬μš©
let name = "μž¬ν˜„"
var greeting = "Hello \(name)" // 좜λ ₯κ°’: Hello μž¬ν˜„

let height = 180
let myInfo = "My height is \(height)"  // 좜λ ₯κ°’: My height is 180

 

5. ν•¨μˆ˜ κΈ°λ³Έ ν˜•νƒœ

ν•¨μˆ˜

  1. κΈ°λŠ₯의 μˆ˜ν–‰: ν•¨μˆ˜λŠ” νŠΉμ • μž‘μ—…μ΄λ‚˜ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” μ½”λ“œμ˜ 블둝이닀. 이 μ½”λ“œ 블둝은 호좜될 λ•Œ μ‹€ν–‰λ˜λ©°, ν•¨μˆ˜ 내에 μ •μ˜λœ μ½”λ“œλ“€μ΄ 순차적으둜 μ‹€ν–‰λœλ‹€.
  2. μž¬μ‚¬μš©μ„±: ν•¨μˆ˜λŠ” μ½”λ“œλ₯Ό λͺ¨λ“ˆν™”ν•˜κ³ , 같은 κΈ°λŠ₯을 λ°˜λ³΅ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•œλ‹€. μ΄λŠ” μ½”λ“œμ˜ 쀑볡을 ν”Όν•˜κ³ , μœ μ§€λ³΄μˆ˜λ₯Ό μš©μ΄ν•˜κ²Œ λ§Œλ“€μ–΄μ€€λ‹€.
  3. λ§€κ°œλ³€μˆ˜(Parameter): ν•¨μˆ˜λŠ” μž…λ ₯값을 받을 수 μžˆλ‹€. μ΄λŸ¬ν•œ μž…λ ₯값은 ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜μ— μ˜ν•΄ λ°›μ•„λ“€μ—¬μ§„λ‹€. 이 λ§€κ°œλ³€μˆ˜λ“€μ€ ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ μ‚¬μš©λ˜μ–΄ νŠΉμ •ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 데 ν™œμš©λœλ‹€.
  4. λ°˜ν™˜κ°’(Return Value): ν•¨μˆ˜λŠ” μ–΄λ–€ 값을 λ°˜ν™˜ν•  μˆ˜λ„ μžˆλ‹€. λ°˜ν™˜κ°’μ€ ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜κ³  μž‘μ—…μ΄ μ™„λ£Œλœ 후에 호좜 μ§€μ μœΌλ‘œ λ°˜ν™˜λœλ‹€.
  5. ν•¨μˆ˜ νƒ€μž…: Swiftμ—μ„œλŠ” ν•¨μˆ˜λ„ ν•˜λ‚˜μ˜ νƒ€μž…μœΌλ‘œ 취급될 수 μžˆλ‹€. μ΄λŠ” ν•¨μˆ˜λ₯Ό λ‹€λ₯Έ ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬ν•˜κ±°λ‚˜ ν•¨μˆ˜λ₯Ό λ‹€λ₯Έ ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μœΌλ‘œ μ‚¬μš©ν•  수 μžˆμŒμ„ μ˜λ―Έν•œλ‹€. 이λ₯Ό 톡해 ν•¨μˆ˜λ₯Ό λ™μ μœΌλ‘œ μ‘°μž‘ν•˜κ³  μ‘°ν•©ν•  수 μžˆλ‹€.

λ©”μ„œλ“œλž€?

ν•¨μˆ˜(Function)와 λ©”μ„œλ“œ(Method)λŠ” μœ μ‚¬ν•œ κΈ°λŠ₯을 μˆ˜ν–‰ν•œλ‹€.

 

ν•¨μˆ˜μ™€ λ©”μ„œλ“œμ˜ 차이?

  1. μ •μ˜μ™€ μ†Œμ†μ„±:
    • ν•¨μˆ˜λŠ” λ…λ¦½μ μœΌλ‘œ μ •μ˜λ˜μ–΄ 있으며, νŠΉμ •ν•œ κ°μ²΄λ‚˜ νƒ€μž…μ— 속해 μžˆμ§€ μ•Šλ‹€. 일반적으둜 μ „μ—­ λ²”μœ„μ—μ„œ μ •μ˜λ˜κ±°λ‚˜ νŠΉμ • λ²”μœ„ 내에 λ‚΄μž₯λœλ‹€.
    • λ©”μ„œλ“œλŠ” 클래슀, ꡬ쑰체, μ—΄κ±°ν˜• λ“±μ˜ νŠΉμ •ν•œ νƒ€μž…μ— 속해 μžˆλ‹€. 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ ν•΄λ‹Ή 객체의 νŠΉμ •ν•œ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€.
  2. 호좜 방식:
    • ν•¨μˆ˜λŠ” μ§μ ‘μ μœΌλ‘œ ν˜ΈμΆœλœλ‹€. 예λ₯Ό λ“€μ–΄, **addNumbers(5, 3)**와 같이 ν•¨μˆ˜ 이름 뒀에 κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•˜μ—¬ ν˜ΈμΆœλœλ‹€.
    • λ©”μ„œλ“œλŠ” ν•΄λ‹Ήν•˜λŠ” 객체 λ˜λŠ” νƒ€μž…μ— λŒ€ν•΄ ν˜ΈμΆœλœλ‹€. 예λ₯Ό λ“€μ–΄, **myObject.increment()**와 같이 객체 λ˜λŠ” νƒ€μž… μΈμŠ€ν„΄μŠ€ 뒀에 λ©”μ„œλ“œ 이름을 ν˜ΈμΆœν•œλ‹€.
  3. μ†Œμ†μ„±:
    • ν•¨μˆ˜λŠ” νŠΉμ •ν•œ 객체의 μ†μ„±μ΄λ‚˜ μƒνƒœμ— μ ‘κ·Όν•  수 μ—†λ‹€. ν•¨μˆ˜λŠ” μ£Όμ–΄μ§„ λ§€κ°œλ³€μˆ˜λ₯Ό λ°›μ•„λ“€μ—¬ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ³  값을 λ°˜ν™˜ν•˜λŠ”λ° μ§‘μ€‘λœλ‹€.
    • λ©”μ„œλ“œλŠ” 객체 λ˜λŠ” νƒ€μž…μ˜ 속성에 μ§μ ‘μ μœΌλ‘œ μ ‘κ·Όν•  수 μžˆλ‹€. μ΄λŠ” λ©”μ„œλ“œκ°€ ν•΄λ‹Ή 객체의 μƒνƒœλ₯Ό λ³€κ²½ν•˜κ±°λ‚˜ 속성에 μ ‘κ·Όν•˜μ—¬ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 데 μ‚¬μš©λœλ‹€.

 

μ˜ˆμ‹œ

 

func ν•¨μˆ˜_이름(μ•„κ·œλ¨ΌνŠΈ_λ ˆμ΄λΈ”: νŒŒλΌλ―Έν„°_νƒ€μž…) -> 리턴_νƒ€μž… {
  // ... μ½”λ“œ
}
// 넀이밍 μ»¨λ²€μ…˜μœΌλ‘œ μΉ΄λ©œμΌ€μ΄μŠ€λ₯Ό μ‚¬μš©ν•œλ‹€ (ex- methodName O / method_name X)

func sayHi(friend: String) {
  print("Hi~ \(friend)!")
}
sayHi(friend: "μž¬ν˜„")


func sayHi(to friend: String) {
  print("Hi~ \(friend)!")
}
sayHi(to: "μž¬ν˜„")


func sayHi(_ friend: String) -> String {
  return ("Hi~ \(friend)!")
}
print(sayHi("μž¬ν˜„"))
// 좜λ ₯κ°’: Hi~ μž¬ν˜„!

// νŠΉμ • 킀에 μ•Œλ§žμ€ λͺΈλ¬΄κ²Œλ₯Ό κ΅¬ν•˜λŠ” ν•¨μˆ˜
func getWeight(height: Int) -> Double {
    let weight = (height - 100) * 9 / 10
    return Double(weight)
}

 

 

 

 

 

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

[Swift] μŠ€νƒ, 큐  (2) 2023.12.06
[Swift] μ˜΅μ…”λ„  (0) 2023.12.06
[Swift] 쑰건문과 반볡문  (0) 2023.12.06
[Swift] μ—°μ‚°μž  (0) 2023.12.06
[Swift] 데이터 νƒ€μž…  (0) 2023.12.06