νƒœκ·Έ 보관물: Kotlin

[Kotlin] ν”„λ‘œκ·Έλž¨ 흐름 μ œμ–΄

μ°Έκ³ : Do it! μ½”ν‹€λ¦° ν”„λ‘œκ·Έλž˜λ° (P. 157~194)

μ½”ν‹€λ¦°μ—μ„œ μ‚¬μš©λ˜λŠ” 쑰건문, 반볡문, 그리고 쀑단/λ°˜ν™˜μ— λŒ€ν•΄ μ•Œμ•„λ³΄μž. λ‹€ν–‰μŠ€λŸ¬μš΄ 점은 cμ–Έμ–΄λ‚˜ pythonκ³ΌλŠ” 크게 λ‹€λ₯΄μ§€ μ•Šλ‹€λŠ” 점이닀.

  1. 쑰건문
  2. 반λͺ©λ¬Έ
  3. 흐름 쀑단과 λ°˜ν™˜

1. 쑰건문

IF문

  • 싀행문이 ν•˜λ‚˜μΌ κ²½μš°μ—λŠ” { } μƒλž΅μ΄ κ°€λŠ₯ν•˜λ‹€.
  • λ²”μœ„λ₯Ό μ§€μ •ν•  λ•ŒλŠ” β€œλ³€μˆ˜μ΄λ¦„ in μ‹œμž‘ κ°’..λ§ˆμ§€λ§‰ κ°’β€μœΌλ‘œ μ§€μ •ν•œλ‹€. (score in 80.0..89.9 => 80.0μ—μ„œ 89.9κΉŒμ§€)

WHEN문

  • λ²”μœ„λ₯Ό μ§€μ •ν•  λ•ŒλŠ” β€œin μ‹œμž‘ κ°’..λ§ˆμ§€λ§‰ κ°’β€μœΌλ‘œ μ§€μ •ν•œλ‹€.
    (in 80.0..89.9 => 80.0μ—μ„œ 89.9κΉŒμ§€)
  • νŠΉμ • 자료 ν˜• 검색은 isλ₯Ό μ‚¬μš©ν•œλ‹€.
    (is String -> β€œβ€ => λ¦¬ν„΄λ˜λŠ” 값이 String νƒ€μž…μ΄λ©΄ μ‹€ν–‰)
  • μΈμžμ—†μ΄ μ‚¬μš©ν•˜κ²Œ 되면 쑰건문의 ν˜•μ‹μœΌλ‘œ μ‚¬μš©ν•  수 μžˆλ‹€. 

2. 반볡문

FOR문

  • 싀행문이 ν•˜λ‚˜μΌ κ²½μš°μ—λŠ” μ€‘κ΄„ν˜Έλ₯Ό μƒλž΅ν•  수 μžˆλ‹€.

WHILE문

  • 쑰건식에 trueλ₯Ό μ“°κ²Œ 되면, 무쑰건 μ‹€ν–‰ν•˜κ²Œ λœλ‹€.
  • 데λͺ¬ ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©ν•˜λŠ” κ²½μš°λ„ λ§Žλ‹€.
    (데λͺ¬ : λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ‹€ν–‰ν•˜λ©΄μ„œ μ’…λ£Œλ˜μ§€ μ•Šκ³  μ§€μ†μ μœΌλ‘œ 처리)

3. 흐름 쀑단과 λ°˜ν™˜

  • ν•¨μˆ˜μ΄λ¦„ 라벨이름@ – return@라벨이름을 μ‚¬μš©ν•˜κ²Œ 되면 ν•΄λ‹Ή 라벨의 λλΆ€λΆ„μœΌλ‘œ μ΄λ™ν•œλ‹€.
  • ν•¨μˆ˜μ— λžŒλ‹€μ‹μ„ ν• λ‹Ήν•˜κ²Œ 되면 κ·Έ λžŒλ‹€μ‹μ΄ μžλ™ μ‹€ν–‰λ˜λŠ”κ²ƒμ΄ μ•„λ‹ˆκ³  λžŒλ‹€μ‹ μžμ²΄κ°€ ν•¨μˆ˜μ— λ‹΄κΈ°λŠ” 것이닀.
     ex) fun greet() = {println(β€œHello”}λ₯Ό ν•˜κ²Œ 되면, printλ˜μ§€ μ•Šκ³  greent()()ν•΄μ£Όμ–΄μ„œ ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•΄μ£Όμ–΄μ•Ό 함
  • μ˜ˆμ™Έ 사항이 λ°œμƒν•˜λŠ” 쑰건
    (1) 운영체제 문제
    (2) μž…λ ₯ κ°’ 문제
    (3) λ°›μ•„ 듀일 수 μ—†λŠ” μ—°μ‚°=0으둜 λ‚˜λˆ„κΈ° λ“±
    (4) λ©”λͺ¨λ¦¬ ν• λ‹Ή μ‹€νŒ¨ 및 λΆ€μ‘±
    (5) 컴퓨터 문제

[Kotlin] ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°

μ°Έκ³ : Do it! μ½”ν‹€λ¦° ν”„λ‘œκ·Έλž˜λ° (P. 98~132)

  1. ν•¨μˆ˜
  2. ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°
  3. λžŒλ‹€μ‹κ³Ό κ³ μ°¨ν•¨μˆ˜ 호좜
  4. λžŒλ‹€μ‹μ˜ λ§€κ°œλ³€μˆ˜

1. ν•¨μˆ˜

코틀린은 ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μ΄λΌκ³  ν–ˆλ‹€. 그럼 ν•¨μˆ˜λŠ” 무엇을 μΌμ»«λŠ” 단어인가?
값을 μž…λ ₯ λ°›μ•„ 사전 μ •μ˜λœ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜κ³ , 결과값을 λ°˜ν™˜ν•˜λŠ” λͺ¨μŒμ„ λ§ν•œλ‹€.
보톡 μ½”λ“œλ₯Ό μ—¬λŸ¬ 번 μ‚¬μš©ν•  수 μžˆμ–΄μ„œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•œλ‹€.

1-1. ν•¨μˆ˜μ˜ ꡬ쑰

fun ν•¨μˆ˜λͺ…(λ³€μˆ˜λͺ…: μžλ£Œν˜•, λ³€μˆ˜λͺ…: μžλ£Œν˜• …): λ°˜ν™˜κ°’μ˜ μžλ£Œν˜•{
Β  μ½”λ“œ
Β  [return λ°˜ν™˜κ°’]
}

μ½”λ“œ1. ν•¨μˆ˜μ˜ ꡬ쑰

λ§Œμ•½, ν•¨μˆ˜μ˜ μ½”λ“œκ°€ ν•œ 쀄이라면, myfunction1 ν•¨μˆ˜ 처럼 단좕할 수 μžˆλ‹€.

ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μ΄ μ—†λ‹€λ©΄, λ°˜ν™˜κ°’μ˜ μžλ£Œν˜•μ€ Unit으둜 μ§€μ •ν•˜κ±°λ‚˜ μƒλž΅ν•œλ‹€.

1-2. ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜

(1) λ§€κ°œλ³€μˆ˜μ˜ 기본값을 μ§€μ •ν•  수 μžˆλ‹€.

(2) λ§€κ°œλ³€μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ, 이름과 ν•¨κ»˜ ν˜ΈμΆœν•  수 μžˆλ‹€.

(3) ν•œ 개의 인자만 μ •μ˜ν•΄λ„ μ—¬λŸ¬ 개의 인자λ₯Ό μž…λ ₯받을 수 μžˆλ‹€.
Variable Argument(κ°€λ³€ 인자)라고 ν•˜λ©°, varargs ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•œλ‹€.

** λ§Œμ•½, κ°€λ³€μΈμžμ™€ 일반 인자λ₯Ό λ™μ‹œμ— μ‚¬μš©ν•  경우 κ°€λ³€μΈμžλ₯Ό λ§ˆμ§€λ§‰μ— λ‘”λ‹€.


2. ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°

코틀린은 ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°κ³Ό 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° λ‘˜ λ‹€ μ§€μ›ν•˜λŠ” 닀쀑 νŒ¨λŸ¬λ‹€μž„ μ–Έμ–΄λ‹€. 특히, ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μ€ μˆœμˆ˜ν•¨μˆ˜, λžŒλ‹€μ‹, κ³ μ°¨ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄ 효율적인 ν”„λ‘œκ·Έλž˜λ°μ„ μ§€ν–₯ν•œλ‹€.

μˆœμˆ˜ν•¨μˆ˜
AλΌλŠ” ν•¨μˆ˜κ°€ μžˆλ‹€κ³  κ°€μ •ν•΄λ³΄μž. 이 ν•¨μˆ˜κ°€ 항상 같은 κ²°κ³Ό 값을 λ°˜ν™˜ν•˜κ³ , 이 ν•¨μˆ˜κ°€ μ™ΈλΆ€μ˜ μƒνƒœλ₯Ό λ°”κΎΈμ§€ μ•Šμ„ λ•Œ, μˆœμˆ˜ν•¨μˆ˜λΌκ³  ν•œλ‹€.

μˆœμˆ˜ν•¨μˆ˜ μ˜ˆμ‹œ

λžŒλ‹€μ‹
이름이 μ—†λŠ” ν•¨μˆ˜, 읡λͺ…ν•¨μˆ˜μ΄λ‹€. ν•œλ²ˆλ§Œ μ‚¬μš©ν•˜κ³  μž¬μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” ν•¨μˆ˜. ν•¨μˆ˜ μ½”λ“œ 가독성이 λ†’μ•„μ§€κ³ ,  ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 자주 μ‚¬μš©ν•˜λŠ” νŒ¨ν„΄μ΄λ‹€.

λžŒλ‹€μ‹ ν˜•μ‹


κ³ μ°¨ν•¨μˆ˜
λ‹€λ₯Έ ν•¨μˆ˜λ₯Ό 인자둜 μ‚¬μš©ν•˜κ±°λ‚˜ ν•¨μˆ˜λ₯Ό κ²°κ³Όκ°’μœΌλ‘œ λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜.

(1) μΌλ°˜ν•¨μˆ˜λ₯Ό 인자둜 μ‚¬μš©ν•˜λŠ” κ³ μ°¨ν•¨μˆ˜

이외에도
(2) λ°˜ν™˜κ°’(return)에 μΌλ°˜ν•¨μˆ˜λ₯Ό 넣은 κ³ μ°¨ν•¨μˆ˜,
(3) λžŒλ‹€μ‹μ„ λ³€μˆ˜λ‚˜ λ§€κ°œλ³€μˆ˜μ— ν• λ‹Ήν•œ κ³ μ°¨ν•¨μˆ˜
κ°€ μžˆλ‹€.


3. λžŒλ‹€μ‹κ³Ό κ³ μ°¨ν•¨μˆ˜ 호좜

3-1. 값에 μ˜ν•œ 호좜

λžŒλ‹€μ‹ ν•¨μˆ˜“λ₯Ό ν˜ΈμΆœν•œλ‹€.
ν•¨μˆ˜κ°€ λ‹€λ₯Έ ν•¨μˆ˜μ˜ 인자둜 전달될 경우 λžŒλ‹€μ‹μ΄ λ°”λ‘œ κ°’μœΌλ‘œ μ²˜λ¦¬λ˜μ–΄ μ¦‰μ‹œ ν•΄λ‹Ή ν•¨μˆ˜μ˜ 결과값을 μ „λ‹¬ν•œλ‹€.

λžŒλ‹€μ‹ lambda μ‹€ν–‰ -> ν•¨μˆ˜ callByValue μ‹€ν–‰
κ²°κ³Όκ°’

3-2. 이름에 μ˜ν•œ λžŒλ‹€μ‹ 호좜

λžŒλ‹€μ‹ 이름“을 ν˜ΈμΆœν•œλ‹€.
인자둜 전달 μ‹œ μ‹€ν–‰λ˜μ§€ μ•Šκ³  , μ‹€μ œ 호좜 μ‹œ μ‹€ν–‰λœλ‹€.

ν•¨μˆ˜ callByName μ‹€ν–‰ -> λžŒλ‹€μ‹ otherlambda μ‹€ν–‰
κ²°κ³Όκ°’

4. λžŒλ‹€μ‹μ˜ λ§€κ°œλ³€μˆ˜

4-1. λžŒλ‹€μ‹μ— λ§€κ°œλ³€μˆ˜κ°€ μ—†λŠ” 경우

λ§€κ°œλ³€μˆ˜κ°€ μ—†μœΌλ―€λ‘œ λžŒλ‹€μ‹μ—λŠ” “->”κ°€ μ‚¬μš©λ˜μ§€ μ•ŠλŠ”λ‹€.

4-2. λžŒλ‹€μ‹μ— λ§€κ°œλ³€μˆ˜κ°€ 1개인 경우

λžŒλ‹€μ‹μ—μ„œ “->” μ™Όμͺ½μ— λ³€μˆ˜λ₯Ό μž‘μ„±ν•΄μ•Ό ν•œλ‹€.
λžŒλ‹€μ‹ 쀑 μ²˜λ¦¬μ½”λ“œμ—μ„œ ‘$λ³€μˆ˜λͺ…‘ λŒ€μ‹  ‘$it‘둜 μž‘μ„±ν•  수 μžˆλ‹€.

4-3. λžŒλ‹€μ‹μ— λ§€κ°œλ³€μˆ˜κ°€ 2개인 경우

λ§€κ°œλ³€μˆ˜κ°€ 1개인 κ²½μš°μ™€ λΉ„μŠ·ν•˜λ‹€.
λžŒλ‹€μ‹μ—μ„œ “->” μ™Όμͺ½μ— λ³€μˆ˜λ₯Ό μž‘μ„±ν•΄μ•Ό ν•œλ‹€. 만일, λžŒλ‹€μ‹μ˜ 일뢀 λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ² λ‹€λ©΄, 언더바(_)λ₯Ό μ‚¬μš©ν•œλ‹€.

[Kotlin] κΈ°λ³Έ κ°œλ…1: 관계, λ³€μˆ˜, μžλ£Œν˜•

  1. μ½”ν‹€λ¦° ν”„λ‘œμ νŠΈ, λͺ¨λ“ˆ, νŒ¨ν‚€μ§€, 파일의 관계
  2. λ³€μˆ˜μ™€ μžλ£Œν˜•
  3. μžλ£Œν˜• 검사와 λ°˜ν™˜

1. μ½”ν‹€λ¦° ν”„λ‘œμ νŠΈ-λͺ¨λ“ˆ-νŒ¨ν‚€μ§€-파일

관계도 μ˜ˆμ‹œ

ν”„λ‘œμ νŠΈ 내뢀에 λͺ¨λ“ˆ,
λͺ¨λ“ˆ 내뢀에 νŒ¨ν‚€μ§€,
νŒ¨ν‚€μ§€ 내뢀에 파일.

μ‹€μ œ νŒŒμΌμ„ 보면 μ•„λž˜μ™€ κ°™λ‹€. νŒ¨ν‚€μ§€ κΈ°μ€€μœΌλ‘œ λ³΄λŠ”κ²Œ μ΄ν•΄ν•˜κΈ° μ‰¬μš΄λ“― ν•˜λ‹€.

(쒌) ν”„λ‘œμ νŠΈ κΈ°μ€€ / (우) νŒ¨ν‚€μ§€ κΈ°μ€€

파일λͺ… “ooo.kt” 와 “ooo”의 차이?

ν•΄λ‹Ή 파일 제λͺ©μœΌλ‘œ 클래슀 1개만 μ„€μ •λ˜μ–΄μžˆλ‹€λ©΄, ooo
κ·Έ μ΄μ™ΈλŠ” ooo.kt 이닀.


2. λ³€μˆ˜μ™€ μžλ£Œν˜•

2-1. val / var

μ½”ν‹€λ¦°μ—μ„œ λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ, valμ΄λ‚˜ var을 μ‚¬μš©ν•  수 μžˆλ‹€.

val : κ³ μ • κ°’, 읽기만 κ°€λŠ₯
var: μœ λ™ κ°’, κ°’ μˆ˜μ • κ°€λŠ₯

2-2. κΈ°λ³Έν˜• μžλ£Œν˜• vs μ°Έμ‘°ν˜• μžλ£Œν˜•

μ½”ν‹€λ¦°μ—μ„œλŠ” μ°Έμ‘°ν˜•λ§Œ μ‚¬μš©ν•œλ‹€. ν•˜μ§€λ§Œ, κ²‰λ³΄κΈ°μ—λ§Œ κ·Έλ ‡κ³  μ»΄νŒŒμΌμ„ μ§„ν–‰ν•˜λ©΄μ„œ μ°Έμ‘°ν˜•μ—μ„œ κΈ°λ³Έν˜•μœΌλ‘œ 바뀐닀.

κΈ°λ³Έν˜•: μž„μ‹œλ©”λͺ¨λ¦¬(μŠ€νƒ)에 κ°’ μ €μž₯, λ©”λͺ¨λ¦¬ 크기 κ³ μ •.
μžλ£Œν˜•: μž„μ‹œλ©”λͺ¨λ¦¬(μŠ€νƒ)에 μ°Έμ‘° μ£Όμ†Œ, 동적 λ©”λͺ¨λ¦¬(νž™)에 μ‹€μ œ κ°’.

2-3. μžλ£Œν˜•

2-4. μ–Έλ”μŠ€μ½”μ–΄

ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λ‹€λ³΄λ©΄ κΈ΄ μˆ«μžλŠ” μ‹λ³„ν•˜κΈ° μ• λ§€ν•œ κ²½μš°κ°€ μžˆλŠ”λ°, _ 을 μ΄μš©ν•΄ μ‹λ³„ν•˜κΈ° νŽΈν•˜κ²Œ ν•  수 μžˆλ‹€. μ–Έλ”κ·ΈλΌμš΄λ“œ(_)λŠ”κ°’μ— 영ν–₯을 μ£Όμ§€ μ•Šκ³ , λͺ¨λ“  μ’…λ₯˜μ˜ 값에 μ‚¬μš©ν•  수 μžˆλ‹€.

var num = 79_000_000
var num2 = 0x99_5F_AB_12

2-5. λΆ€λ™μ†Œμˆ˜μ 

IEEE 754

(μœ„ν‚€λ””ν”Όμ•„ μ°Έκ³ )

βˆ’118.625 (십진법)을 IEEE 754 (32λΉ„νŠΈ 단정밀도)둜 ν‘œν˜„ν•΄ 보자.

(1) μŒμˆ˜μ΄λ―€λ‘œ, λΆ€ν˜ΈλΆ€λŠ” 1이 λœλ‹€. 0은 μ–‘μˆ˜, 1은 μŒμˆ˜μ΄λ‹€.
(2) κ·Έ λ‹€μŒ, μ ˆλŒ“κ°’μ„ μ΄μ§„λ²•μœΌλ‘œ λ‚˜νƒ€λ‚΄λ©΄ 1110110.101이 λœλ‹€.
(3)μ†Œμˆ˜μ μ„ μ™Όμͺ½μœΌλ‘œ μ΄λ™μ‹œμΌœ, μ™Όμͺ½μ—λŠ” 1만 λ‚¨κ²Œ λ§Œλ“ λ‹€. 예λ₯Ό λ“€λ©΄ 1110110.101=1.110110101Γ—2⁢ κ³Ό κ°™λ‹€. 이것을 μ •κ·œν™”λœ λΆ€λ™μ†Œμˆ˜μ  수라고 ν•œλ‹€.
(4) κ°€μˆ˜λΆ€λŠ” μ†Œμˆ˜μ μ˜ 였λ₯Έμͺ½ λΆ€λΆ„μœΌλ‘œ, λΆ€μ‘±ν•œ λΉ„νŠΈ 수 λΆ€λΆ„λ§ŒνΌ 0으둜 μ±„μ›Œ 23λΉ„νŠΈλ‘œ λ§Œλ“ λ‹€. κ²°κ³ΌλŠ” 11011010100000000000000이 λœλ‹€.
(5) μ§€μˆ˜λŠ” 6μ΄λ―€λ‘œ, Biasλ₯Ό 더해야 ν•œλ‹€. 32λΉ„νŠΈ IEEE 754 ν˜•μ‹μ—μ„œλŠ” BiasλŠ” 127μ΄λ―€λ‘œ 6+127 = 133이 λœλ‹€. μ΄μ§„λ²•μœΌλ‘œ λ³€ν™˜ν•˜λ©΄ 10000101이 λœλ‹€.

2-6. 2의 보수

μ»΄ν“¨ν„°λŠ” 음수λ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•΄ 2의 보수 κ°œλ…μ„ μ‚¬μš©ν•œλ‹€. 컴퓨터 μ—°μ‚°κΈ°μ—λŠ” λ§μ…ˆ κΈ°λŠ₯의 회둜만 있고, λ§μ…ˆ κΈ°λŠ₯으둜 λΊ„μ…ˆμ„ κ΅¬ν˜„ν•΄μ•Όν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

(1) Byteν˜• λ³€μˆ˜μ— 0111 1111 (127) 이 μžˆλ‹€.
(2) 여기에 2μ§„μˆ˜ 1을 λ”ν•˜λ©΄ 1000 0000이 되고, -128이 λœλ‹€.
(3) 즉 νŠΉμ •ν•œ 수λ₯Ό 음수둜 λ§Œλ“œλ €λ©΄, 2μ§„μˆ˜ 값을 뒀집은 ν›„ 1을 λ”ν•˜λ©΄ νŠΉμ • 수의 μŒμˆ˜κ°€ λœλ‹€.

μ˜ˆμ‹œλ‘œ, 1000 0001은 -127, 1000 0011은 -125λ‹€.


3. μžλ£Œν˜• 검사와 λ°˜ν™˜

3-1. Null을 ν—ˆμš©ν•˜λŠ” λ³€μˆ˜ 검사

일반적으둜 코틀린은 λ³€μˆ˜μ— null ν• λ‹Ή μ‹œ non-null μ—λŸ¬ λ°œμƒ.
λ³€μˆ˜ μ„ μ–Έ μ‹œ μžλ£Œν˜• 뒀에 λ¬ΌμŒν‘œλ₯Ό μΆ”κ°€ν•œλ‹€.

var str0 : String? = "This is String"
str0 = null

3-2. μ„Έμ΄ν”„μ½œκ³Ό μ—˜λΉ„μŠ€

[ μ„Έμ΄ν”„μ½œ ]
null이 할당됐을 κ°€λŠ₯성이 μžˆλŠ” λ³€μˆ˜λ₯Ό 검사 ν›„ μ•ˆμ „ν•˜κ²Œ 호좜.

println("str0: $str0 length: ${str0?.length}")


str0이 null인지 확인.
null이면 null 좜λ ₯. / null이 μ•„λ‹ˆλ©΄ length 좜λ ₯.

[ μ—˜λΉ„μŠ€ ]
λ³€μˆ˜κ°€ null인지 확인 ν›„ null이면 였λ₯Έμͺ½ μˆ˜μ‹, μ•„λ‹ˆλ©΄ μ™Όμͺ½ μˆ˜μ‹μ„ 좜λ ₯.

println("str0: $str0 length: ${str0?.length ?: -1}")


ifλ¬Έκ³Ό λ™μΌν•˜λ‹€.

3-3. 슀마트캐슀트

컴파일러 슀슀둜 μžλ£Œν˜•μ„ λ³€ν™˜ν•˜λŠ” 것.

[ Number ν˜• ]
숫자λ₯Ό μ €μž₯ν•˜λŠ” 특수 μžλ£Œν˜•

var tmp : Number = 13
tmp  = 13.0f
tmp = 13L

[ AS ]
μžλ£Œν˜• λ³€ν™˜μ΄ μ•ˆλ˜λ©΄, μ˜ˆμ™Έ λ°œμƒ.

val tmp2 : String? = x as? String

3-4. Any ν˜•

νŠΉλ³„ν•œ μžλ£Œν˜•μ΄ μ •ν•΄μ§€μ§€ μ•Šμ€ 경우 μ‚¬μš©ν•œλ‹€. μ–΄λ–€ μžλ£Œν˜•μ΄λ“  될 수 μžˆλ‹€. λ˜ν•œ, λͺ¨λ“  ν΄λž˜μŠ€λŠ” Any ν˜•μ˜ μžμ‹ ν΄λž˜μŠ€μ΄λ‹€.

var a : Any = 3
a = "Wow"