배열

배열 에서 F#

3개의 연습 문제

배열 소개

F#의 array는 길이가 고정된, 0개 이상의 값으로 이루어진 컬렉션이에요. 즉, 배열을 한 번 만들면 크기는 바뀌지 않지만 값은 바꿀 수 있어요. 배열에 들어 있는 값은 모두 같은 타입이어야 해요. 배열은 다음과 같이 정의할 수 있어요:

let empty = [| |]
let emptyAlternative = Array.empty

let singleValue = [| 5 |]
let singleValueAlternative = Array.singleton 5

let threeValues = [| "a"; "b"; "c" |]

원소는 인덱스를 사용해 배열에 대입하거나 배열에서 가져올 수 있어요. F# 배열의 인덱스는 0부터 시작해요. 즉, 첫 번째 원소의 인덱스는 항상 0이에요:

let numbers = [| 2; 3; 5 |]

// Update value in array
numbers[2] <- 9

// Read value from array
numbers[2]
// => 9

배열은 Array 모듈에 정의된 함수와 연산자로 다뤄요. 이런 함수 중 일부는 array 인스턴스의 속성으로도 사용할 수 있어요:

Array.length [| 7; 8 |] // => 2
[| 7; 8 |].Length       // => 2

여기에 정답이나 오답은 없어요. 일반적으로 Array 모듈의 함수는 타입 추론과 더 잘 어울리고, 속성은 코드를 더 간결하게 만들어 줘요.

배열 패턴을 사용하면 배열에 패턴 매칭을 할 수 있어요:

let describe array =
    match array with
    | [| |] -> "Empty"
    | [| 1; 2; three |] -> sprintf "1, 2, %d" three
    | _ -> "Other"

describe [| |]         // => "Empty"
describe [| 1; 2; 4 |] // => "1, 2, 4"
describe [| 5; 7; 9 |] // => "Other"

패턴 매칭을 할 때 값을 버릴 수도 있어요. 특정 경우에 값이 필요하지 않을 때(즉, 값을 사용하지 않을 때)는 밑줄('_')을 사용해 그 뜻을 나타내요:

let describe array =
    match array with
    | [| |] -> "Empty array"
    | [| x |] -> "Array with one item"
    | [| _; y |] -> "Array with two items (first item ignored)"
    | _ -> "Array with many items (all items ignored)"

describe [| |]          // => "Empty array"
describe [| 1 |]        // => "Array with one item"
describe [| 5; 7 |]     // => "Array with two items (first item ignored)"
describe [| 5; 7; 9 |]  // => "Array with many items (all items ignored)"

패턴 매칭에서 '_' 하나는 항상 _마지막_에 와야 해요. 다른 경우 중 어디에도 해당하지 않는 값은 모두 이 경우에서 처리돼요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요

배열 배우기

연습이 잠겨 있어요

배열 개념을 연습하려면 연습 문제 2개를 더 잠금 해제해요