[F#] λ μ½λ
F#μ λ μ½λλ νμ μ μ κΈ°λ₯μ μ 곡νλλ°, λ€λ₯Έ μΈμ΄μ 'ꡬ쑰체'μ κ±°μ λλ±ν 물건μ΄λ€.
type ν€μλλ₯Ό μ¬μ©ν΄ μ μν μ μλ€.
type λ μ½λλͺ
=
{
**Β Β Β νλλͺ
1: νμ
1; νλλͺ
2: νμ
2 ...**
}
κ·Έλ¦¬κ³ μμ±ν λ, μ€κ΄νΈλ‘ κ°μΈκ³ κ° νλλ₯Ό λ΄λΆμμ μ΄κΈ°ννλ μμΌλ‘ μμ±ν μ μλ€
μ΄λ κ²


νλλͺ
μ΄ λͺ¨νΈνκ² λ μλ μλλ°, κ·Έλ΄λλ λ μ½λλͺ
μ λͺ
μν΄μ£Όλ©΄ λλ€.


ꡬ쑰체 λ μ½λ
κΈ°λ³Έμ μΌλ‘ λ μ½λλ, μ°Έμ‘°ν(reference)μ κ°μ²΄λ§μ μμ±νλ€.
λ¨μν κ°(value)νμμ κ°μ²΄λ₯Ό μμ±νκ³ μΆλ€λ©΄, λ μ½λλ₯Ό κ΅¬μ‘°μ²΄λ‘ μ μν΄μΌ νλ€.
κ·Έλ¬λ €λ©΄ λ μ½λ μ μ μμ μ μ© μμ±μ λΆμ΄λ©΄ λλ€.


κ°λ³ νλ
λ μ½λμ νλμλ mutableμ λΆμ¬μ μμ μ΄ κ°λ₯νκ² ν μ μλ€.
λ¨μ©νμ§ μλκ² μ’λ€.


λ©μλ
λ©μλλ μ μν μ μλ€!
ꡬ쑰체 μ μ λ€μ with λΆμ΄κ³ member ν€μλλ₯Ό μ¬μ©νλ©΄ λλ€. withμ μ΄μ λΆν° λ©€λ²λ₯Ό μ μνκ² λ€λ κ²μ μ»΄νμΌλ¬μκ² μλ¦°λ€.
this.λ©μλλͺ
μΌλ‘ ν¨μλ₯Ό μ μνλ€. λ μ½λμ μ κ·Όνλ €λ©΄ thisλ₯Ό μ¬μ©νλ©΄ λλ€.


λ©μλ μ μΈλΆλ₯Ό λΆλ¦¬ν΄μ λ°λ‘ μμ±νκ³ μΆλ€λ©΄, κ·Έλ₯ type λ μ½λλͺ
with λ¬κ³ μ°λ©΄ λλ€.


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