[Kotlin] ν™•μž₯ν•¨μˆ˜(Extension Function)

2021. 1. 14. 04:08γ†πŸ“±Android/πŸ“” Kotlin

λ°˜μ‘ν˜•

 

Kotlinμ—λŠ” ν™•μž₯ ν•¨μˆ˜(Extension Function)μ΄λΌλŠ” κ°œλ…μ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€.

Andorid κ°œλ°œμ—λ„ μœ μš©ν•˜κ²Œ μ‚¬μš©λ˜λŠ” ν™•μž₯ν•¨μˆ˜(Extension Function)에 λŒ€ν•΄ κ³΅λΆ€ν•΄λ³Όκ²Œμš” : )

 

Extension Function μ΄λž€?!

ν΄λž˜μŠ€μ—λŠ” λ‹€μ–‘ν•œ λ§€μ†Œλ“œ(ν•¨μˆ˜)듀이 μ‘΄μž¬ν•˜λŠ”λ°, μ΄λ•Œ 기쑴의 ν΄λž˜μŠ€μ— λ‚΄κ°€ μ›ν•˜λŠ” μƒˆλ‘œμš΄ ν•¨μˆ˜λ₯Ό μΆ”κ°€(ν™•μž₯)ν•˜λ €κ³  ν•  λ•Œ μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.

즉, 기쑴의 ν΄λž˜μŠ€μ— μƒˆλ‘œμš΄ ν•¨μˆ˜λ₯Ό ν™•μž₯ν•œλ‹€ 라고 μ΄ν•΄ν•˜λ©΄ 쒋을 것 κ°™μŠ΅λ‹ˆλ‹€!

ν΄λž˜μŠ€μ™€ 같이 ν™•μž₯ λŒ€μƒμ— ν™•μž₯ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λ‹€μŒκ³Ό 같이 μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

fun ν™•μž₯ν•¨μˆ˜ class.ν•¨μˆ˜ 이름(λ§€κ°œλ³€μˆ˜, ..) : λ°˜ν™˜κ°’ {
	....
    return κ°’
}

 

λ§Œμ•½ λͺ¨λ“  ν΄λž˜μŠ€μ— λ‚΄κ°€ λ§Œλ“  ν™•μž₯ν•¨μˆ˜λ₯Ό μΆ”κ°€ν•˜κ³  μ‹Άλ‹€λ©΄ ?!

μ΅œμƒμœ„ 클래슀인 'Any'에 ν™•μž₯ ν•¨μˆ˜λ₯Ό κ΅¬ν˜„ν•˜λ©΄ κ°€λŠ₯ν•©λ‹ˆλ‹€ ! μ½”ν‹€λ¦°μ˜ μ΅œμƒμœ„ μš”μ†ŒλŠ” 'Any'이기 λ•Œλ¬Έμ— Any에 ν™•μž₯ ν•¨μˆ˜λ₯Ό μΆ”κ°€ν•˜λ©΄ μ½”ν‹€λ¦°μ˜ λͺ¨λ“  μš”μ†Œμ— μƒμ†λ˜κΈ° λ•Œλ¬Έμ— λͺ¨λ“  ν΄λž˜μŠ€μ— λ‚΄κ°€ λ§Œλ“  ν™•μž₯ν•¨μˆ˜λ₯Ό μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

String ν΄λž˜μŠ€μ— ν™•μž₯ν•¨μˆ˜ 좔가해보기

String ν΄λž˜μŠ€μ— μƒˆλ‘œμš΄ ν™•μž₯ ν•¨μˆ˜λ₯Ό ν•˜λ‚˜ 좔가해보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€. 길이가 더 κΈ΄ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•˜λŠ” ν™•μž₯ ν•¨μˆ˜ getLongString()을 μΆ”κ°€ν•˜κ² μŠ΅λ‹ˆλ‹€.

fun main() {
	val string1 = "Hello!"
    val string2 = "Bye!"
    
    println(string1.getLongString(string2))
}

fun String.getLongString(str : String) : String = 
	if (this.length > str.length) this else str

 

이처럼 ν™•μž₯ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜κ²Œλ˜λ©΄ κΈ°μ‘΄ 클래슀의 μ„ μ–ΈλΆ€λ₯Ό μˆ˜μ •ν•˜μ§€ μ•Šκ³ λ„ μ™ΈλΆ€μ—μ„œ 손 μ‰½κ²Œ κΈ°λŠ₯을 ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€ : )

ν™•μž₯ν•¨μˆ˜λ₯Ό λ§Œλ“€ λ•Œ ν™•μž₯ν•˜λ €λŠ” λŒ€μƒμ— λ™μΌν•œ μ΄λ¦„μ˜ 멀버 λ³€μˆ˜λ‚˜ λ©”μ„œλ“œκ°€ μ‘΄μž¬ν•˜λ©΄ 항상 ν™•μž₯ν•¨μˆ˜λ³΄λ‹€ 멀버 λ©”μ„œλ“œκ°€ λ¨Όμ € 호좜 λ˜μ–΄ μ§„λ‹€λŠ” 점! κΈ°μ–΅ν•΄λ‘‘μ‹œλ‹€.

 

μ•ˆλ“œλ‘œμ΄λ“œ κ°œλ°œν•  λ•Œ ν™•μž₯ν•¨μˆ˜λ₯Ό 잘 λ§Œλ“€μ–΄μ„œ μ‚¬μš©ν•˜λ©΄ 맀우 효율적으둜 μ½”λ“œλ₯Ό κ΅¬ν˜„ν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ°˜μ‘ν˜•

'πŸ“±Android > πŸ“” Kotlin' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Kotlin] Kotlin μ΄λž€?  (0) 2021.05.28