[F#] λ ˆμ½”λ“œ

[원본 링크]

F#은 λ ˆμ½”λ“œλž€ νƒ€μž… μ •μ˜ κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ”λ°, λ‹€λ₯Έ μ–Έμ–΄μ˜ 'ꡬ쑰체'와 거의 λ™λ“±ν•œ 물건이닀.

type ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄ μ •μ˜ν•  수 μžˆλ‹€.
type λ ˆμ½”λ“œλͺ… =
{
**Β Β Β  ν•„λ“œλͺ…1: νƒ€μž…1; ν•„λ“œλͺ…2: νƒ€μž…2 ...**
}

그리고 생성할땐, μ€‘κ΄„ν˜Έλ‘œ 감싸고 각 ν•„λ“œλ₯Ό λ‚΄λΆ€μ—μ„œ μ΄ˆκΈ°ν™”ν•˜λŠ” μ‹μœΌλ‘œ 생성할 수 μžˆλ‹€
μ΄λ ‡κ²Œ image

image

ν•„λ“œλͺ…이 λͺ¨ν˜Έν•˜κ²Œ 될 μˆ˜λ„ μžˆλŠ”λ°, κ·ΈλŸ΄λ•ŒλŠ” λ ˆμ½”λ“œλͺ…을 λͺ…μ‹œν•΄μ£Όλ©΄ λœλ‹€. image

image


ꡬ쑰체 λ ˆμ½”λ“œ
기본적으둜 λ ˆμ½”λ“œλŠ”, μ°Έμ‘°ν˜•(reference)의 κ°μ²΄λ§Œμ„ μƒμ„±ν•œλ‹€.
λ‹¨μˆœν•œ κ°’(value)ν˜•μ‹μ˜ 객체λ₯Ό μƒμ„±ν•˜κ³  μ‹Άλ‹€λ©΄, λ ˆμ½”λ“œλ₯Ό ꡬ쑰체둜 μ •μ˜ν•΄μ•Ό ν•œλ‹€.
그러렀면 λ ˆμ½”λ“œ μ •μ˜ μœ„μ— μ „μš© 속성을 뢙이면 λœλ‹€. image

image


κ°€λ³€ ν•„λ“œ
λ ˆμ½”λ“œμ˜ ν•„λ“œμ—λ„ mutable을 λΆ™μ—¬μ„œ μˆ˜μ •μ΄ κ°€λŠ₯ν•˜κ²Œ ν•  수 μžˆλ‹€.
λ‚¨μš©ν•˜μ§€ μ•ŠλŠ”κ²Œ μ’‹λ‹€. image

image


λ©”μ„œλ“œ
λ©”μ„œλ“œλ„ μ •μ˜ν•  수 μžˆλ‹€!
ꡬ쑰체 μ •μ˜ 뒀에 with 뢙이고 member ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€. with은 μ΄μ œλΆ€ν„° 멀버λ₯Ό μ •μ˜ν•˜κ² λ‹€λŠ” 것을 μ»΄νŒŒμΌλŸ¬μ—κ²Œ μ•Œλ¦°λ‹€.
this.λ©”μ„œλ“œλͺ…μœΌλ‘œ ν•¨μˆ˜λ₯Ό μ •μ˜ν•œλ‹€. λ ˆμ½”λ“œμ— μ ‘κ·Όν•˜λ €λ©΄ thisλ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€. image

image

λ©”μ„œλ“œ μ„ μ–ΈλΆ€λ₯Ό λΆ„λ¦¬ν•΄μ„œ λ”°λ‘œ μž‘μ„±ν•˜κ³  μ‹Άλ‹€λ©΄, κ·Έλƒ₯ type λ ˆμ½”λ“œλͺ… with 달고 μ“°λ©΄ λœλ‹€. image

image



μ°Έμ‘°
https://docs.microsoft.com/ko-kr/dotnet/fsharp/tour#record-and-discriminated-union-types