[Kotlin] Kotlin μ΄λž€?

2021. 5. 28. 13:00γ†πŸ“±Android/πŸ“” Kotlin

λ°˜μ‘ν˜•

 

μ˜€λŠ˜μ€ μ•ˆλ“œλ‘œμ΄λ“œ 개발의 곡식언어인 코틀린이 무엇인지 그리고 μ™œ 쒋은지에 λŒ€ν•΄ 정리해보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€.

 

 

μ½”ν‹€λ¦° μ΄λž€?

κ°„κ²°ν•œ 문법과 높은 μ•ˆμ •μ„±μœΌλ‘œ 높은 생산성을 보μž₯ν•˜μ—¬ 개발된 ν”„λ‘œκ·Έλž˜λ°μ–Έμ–΄λ‘œ 100%μžλ°”μ™€μ˜ ν˜Έν™˜μ΄ κ°€λŠ₯ν•˜μ—¬ μžλ°”λ‘œ μž‘μ„±λœ ν”„λ‘œμ νŠΈμ— μ½”ν‹€λ¦° μ½”λ“œκ°€ μΆ”κ°€ν•  수 μžˆλ‹€λŠ” 점이 κ°€μž₯ 큰 μž₯μ μž…λ‹ˆλ‹€. 

λ˜ν•œ μžλ°” μ½”λ“œλ₯Ό μ½”ν‹€λ¦°μœΌλ‘œ μ‰½κ²Œ λ³€ν™˜μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

 

 

 

코틀린이 μ™œ 쒋은 건데 ?

βœ”οΈ κ°„κ²°ν•œ 문법

μžλ°”μ™€ C와 같이 뒀에 λ¬Έμž₯끝을 μ˜λ―Έν•˜λŠ” μ„Έλ―Έμ½œλ‘  ; 이 μ‚¬λΌμ‘ŒμŠ΅λ‹ˆλ‹€. 

객체λ₯Ό 생성할 λ•Œμ—λŠ” new ν‚€μ›Œλ“œ 없이 μ‰½κ²Œ 객체λ₯Ό 생성할 수 있고, λ³΄ν†΅μ˜ μ–Έμ–΄μ—μ„œλŠ” νƒ€μž…μ„ λͺ…μ‹œν•˜λ©° λ³€μˆ˜λ‚˜ μƒμˆ˜λ₯Ό μ„ μ–Έν–ˆμ§€λ§Œ

μ½”ν‹€λ¦°μ—μ„œλŠ” νƒ€μž… 좔둠을 μ§€μ›ν•˜μ—¬ 일반적인 경우 νƒ€μž…μ„ λͺ…μ‹œν•˜μ§€ μ•Šμ•„λ„ λ©λ‹ˆλ‹€!

 

 

βœ”οΈλ„ μ•ˆμ •μ„±

μžλ°”μ—μ„œλŠ” 객체 νƒ€μž…μ˜ λ³€μˆ˜μ—μ„œ null 값을 ν—ˆμš© 여뢀에 λŒ€ν•œ ꡬ뢄을 ν•  수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ½”ν‹€λ¦°μ—μ„œλŠ” ? , !! 을 μ΄μš©ν•˜μ—¬ null 값을 ꡬ뢄할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

μ™œ null 값을 κ΅¬λΆ„ν•΄μ•Όν• κΉŒ?

λ„κ°’μ˜ ν—ˆμš© μ—¬λΆ€λ₯Ό 컴파일 λ‹¨κ³„μ—μ„œ κ²€μ‚¬ν•˜κΈ° λ•Œλ¬Έμ— λŸ°νƒ€μž„ μ—λŸ¬λ₯Ό 쀄일 수 μžˆμ–΄μš”! : )

 

βœ”οΈκ°€λ³€κ³Ό λΆˆλ³€μ˜ ꡬ뢄

μžλ°”μ—μ„œλŠ” νƒ€μž…μ„ λͺ…μ‹œν•˜μ—¬ λ³€μˆ˜, μƒμˆ˜λ₯Ό μƒμ„±ν•˜μ§€λ§Œ μ½”ν‹€λ¦°μ—μ„œλŠ” λ³€μˆ˜μ™€ μƒμˆ˜λ₯Ό μ„ μ–Έμ‹œ 'val', 'var'λ₯Ό μ΄μš©ν•©λ‹ˆλ‹€.

- val : λΆˆλ³€(ν•œλ²ˆ μ„ μ–Έν•˜λ©΄ 값을 λ³€ν™”μ‹œν‚¬ 수 μ—†μ–΄μš”) = μžλ°”μ˜ finalκ³Ό 동일

- var : κ°€λ³€ (ν•œλ²ˆ μ„ μ–΄ν•˜κ³  값을 λ³€ν™”μ‹œν‚¬ 수 μžˆμ–΄μš”) = μžλ°”μ˜ final 없이 μ„ μ–Έν•˜λŠ” λ³€μˆ˜μ™€ 동일

 

+ μ»¬λ ‰μ…˜ λ‚΄ ν¬ν•¨λœ 자료(리슀트 데이터)에 λŒ€ν•΄μ„œλ„ κ°€λ³€κ³Ό λΆˆλ³€μ„ ꡬ뢄할 수 μžˆμŠ΅λ‹ˆλ‹€.

- List<String> = listOf("foo","bar","baz") // λΆˆλ³€
- MutableList<String> = mutableListOf("foo","bar","baz") // κ°€λ³€

 

βœ”οΈλžŒλ‹€ ν‘œν˜„μ‹ 지원

μ•ˆλ“œλ‘œμ΄λ“œ κ°œλ°œμ— μžˆμ–΄μ„œ 이게 κ°€μž₯ 큰 μ½”ν‹€λ¦°μ˜ 강점이라고 μƒκ°ν•©λ‹ˆλ‹€. SAM(Sigle Abstract Method) λ³€ν™˜μ„ μ§€μ›ν•˜μ—¬ ν•¨μˆ˜μ˜ 인자둜 μ „λ‹¬λ˜λŠ” μΈν„°νŽ˜μ΄μŠ€μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό λžŒλ‹€μ‹μœΌλ‘œ ν‘œν˜„ν•  수 μžˆμ–΄μš” !

 

- Java

View view = ...;
view.setOnClickListener( new View.OnClickListener() {
	@Override
	public void onClick(View view) {
		Toast.makeText(view.getContext(), "Click", Toast.LEGTH_SHORT).show();
	}
})

 

- Kotlin

val view = ....

// SAM λ³€ν™˜μ„ 톡해 OnClickListener 
// μΈν„°νŽ˜μ΄μŠ€μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό λžŒλ‹€μ‹μœΌλ‘œ ν‘œν˜„ν•¨
view.setOnClickListener {
	Toast.makeText(it.context, "Click", Toast.LEGTH_SHORT).show()
}

 

βœ”οΈμŠ€νŠΈλ¦Ό API 지원

Java 8μ—λŠ” μ»¬λ ‰μ…˜ λ‚΄ 자료λ₯Ό λ‹€λ£¨λŠ” 데 μœ μš©ν•œ 슀트림 APIλ₯Ό μ§€μ›ν•©λ‹ˆλ‹€.

μ΄λ•Œ, μžλ°”λŠ” μ•ˆλ“œλ‘œμ΄λ“œ 버전 6.0 μ΄μƒμ—μ„œλ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜μ§€λ§Œ 코틀린은 μ½”ν‹€λ¦° ν‘œμ€€ 라이브러리λ₯Ό 톡해 슀트림 APIλ₯Ό μ œκ³΅ν•΄μš”!

 

βœ”οΈμ™„λ²½ν•œ μžλ°” ν˜Έν™˜μ„±

μ½”ν‹€λ¦°κ³Ό μžλ°”λͺ¨λ‘ μžλ°” 기반 ν™˜κ²½μ—μ„œ κ·ΈλŒ€λ‘œ μ‚¬μš© κ°€λŠ₯ ν•˜λ―€λ‘œ μžλ°” 라이브러리 λͺ¨λ‘ ν˜Έν™˜μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€ !

 

 

 

 

μ˜€λŠ˜μ€ μ½”ν‹€λ¦° 언어에 λŒ€ν•΄ μ†Œκ°œν•΄λ“œλ ΈμŠ΅λ‹ˆλ‹€.

μ•ˆλ“œλ‘œμ΄λ“œ κ°œλ°œμ„ μžλ°”λ‘œ ν•˜μ‹œκ³  계신닀면, ν•œλ²ˆ 코틀린을 μ μš©ν•΄λ³΄μ‹œλŠ” 것은 μ–΄λ–¨κΉŒμš”?

 

 

λ°˜μ‘ν˜•

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

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