πŸ’» Programming/Flutter & Dart & Flame

[Flutter] Day 2 - Dart μ•Ό λ„Œ λˆ„κ΅¬λ‹ˆ?

μΌ€μ΄μΉ˜ 2023. 1. 20. 12:13

ν”ŒλŸ¬ν„°λ₯Ό 써보렀닀가 λ‹€νŠΈλ₯Ό κ³΅λΆ€ν•˜κΈ° μ‹œμž‘..

Dart κ°€ μ–΄λ–€ μ–Έμ–΄μΈμ§€μ—λŒ€ν•œ κ°„λž΅ν•œ μ†Œκ°œλ‚΄μš©μ„ κ³΅μ‹λ¬Έμ„œμ—μ„œ μ½μ–΄λ΄€μŠ΅λ‹ˆλ‹€.

얼핏 λ³΄λ‹ˆ μžλ°”μ™€ 맀우 μœ μ‚¬ν•©λ‹ˆλ‹€.

객체지ν–₯ 언어이고 λ³€μˆ˜, loop, λ©”μ„œλ“œ, 클래슀 λ“±λ“± 맀우 λ§Žμ€ λΆ€λΆ„μ—μ„œ μœ μ‚¬ν•œ 점을 보이고 있음.

μžλ°”μ™€ λ‹€νŠΈμ˜ 차이점을 λ‚˜μ—΄ν•΄λ³΄μžλ©΄..λ‹€νŠΈλŠ” μ•„λž˜μ™€ 같은 νŠΉμ§• λ˜λŠ” κΈ°λŠ₯이 μžˆμŠ΅λ‹ˆλ‹€.

  • primitive(μ›μ‹œ) νƒ€μž…μ΄ μ—†μŒ. μžλ°”μ˜ 경우 int, long, double κ³Ό 같은 μ›μ‹œνƒ€μž…κ³Ό 이 μ›μ‹œνƒ€μž…λ“€μ˜ wrapper 클래슀인 Integer, Long, Double 등이 μ‘΄μž¬ν•˜μ§€λ§Œ, λ‹€νŠΈλŠ” λͺ¨λ“  νƒ€μž…μ΄ Object μž„.
  • λ³€μˆ˜ μ‚¬μš©λ²• (좜λ ₯μ‹œ λ¬Έμžμ—΄μ„ "이걸 좜λ ₯할건데 λ³€μˆ˜λͺ…을 λΆ™μ˜€μ–΄μš” $λ³€μˆ˜λͺ…" μ΄λ ‡κ²Œ 써주면 $λ³€μˆ˜λͺ… 이 λ³€μˆ˜κ°€ λ“€κ³ μžˆλŠ” κ°’μœΌλ‘œ μΉ˜ν™˜λ˜μ–΄ 좜λ ₯됨. μžλ°”μ˜ 경우 String.format 을 μ΄μš©ν•΄μ•Ό ν–ˆμŒ), λ³€μˆ˜λͺ… μžλ¦¬μ— {expression} 을 μ‚¬μš©ν•˜μ—¬ 계산식을 μ‚¬μš©ν•  μˆ˜λ„ 있음
  • null safety (Dart 2.12 버전뢀터 생김. μžλ°”μ˜ NPE μ˜ˆλ°©μ„ κ°œλ°œμžκ°€ μ•„λ‹Œ μ»΄νŒŒμΌλŸ¬κ°€ 해주도둝 ν•œ κΈ°λŠ₯으둜 기본적으둜 λͺ¨λ“  κ°μ²΄λŠ” non-nullable 둜 취급함. λ‹€λ§Œ ? 기호λ₯Ό μ΄μš©ν•΄μ„œ nullable 객체라고 λͺ…μ‹œμ μœΌλ‘œ μ„ μ–Έν•˜λ©΄ null 값도 μ‚¬μš©ν•  수 있음, κ³΅μ‹λ¬Έμ„œ μ°Έκ³ )
  • private, protected, public, default 같은 μ ‘κ·Όμ œν•œμž(access modifier)κ°€ μ—†μŒ. λ‹€λ§Œ 이름이 λ°‘μ€„λ‘œ μ‹œμž‘ν•˜λ©΄ ν•΄λ‹Ή 라이브러리(클래슀?)에 privateν•œ 것이 됨.
  • λ‹€νŠΈμ˜ int νƒ€μž…μ€ 64 λΉ„νŠΈ signed 값이고 ν”Œλž«νΌμ— 따라 λ²”μœ„κ°€ μ•½κ°„ 닀름 (κ³΅μ‹λ¬Έμ„œ)

뭐 이외에도 lexical scope, lexical closure λ“± μ—¬λŸ¬ λΆ€λΆ„μ—μ„œ λ‹€λ₯Έ 뢀뢄듀이 λ³΄μ˜€λŠ”λ° μ—¬κΈ° λ‹€ λ‚˜μ—΄ν•  μˆ˜λŠ” μ—†κ³ ,

전체적인 λŠλ‚Œμ€ μžλ°”μ™€ μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό 합쳐놓은 μ–Έμ–΄λΌλŠ” λŠλ‚Œμ„ λ°›μ•˜μŠ΅λ‹ˆλ‹€. (ν•΄λ³Έκ²Œ Javaλž‘ Javascript 뿐이라.. γ…Ž)

 

참고둜 λ‹€νŠΈνŒ¨λ“œμ—μ„œ μ΄λŸ°μ €λŸ° λ‹€νŠΈμ½”λ“œλ“€μ„ μ‹œν—˜ν•΄λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.