나는 나의 시나리오를 위해 간단한 예제를 작성했다. 나는 레코드 유형을 Switch
F #의 레코드 메소드
type State =
| On
| Off
with
member this.flip =
match this with
| On -> Off
| Off -> On
type Switch = { State : State }
를 만든 다음 나는 하나 개의 요소는 내가
let flipMany times switch =
[1 .. times]
|> List.fold (fun (sw : Switch) _ -> flip sw) switch
쓰기 많은 연속적인 시간
flip
에
let flip switch = { switch with State = switch.State.flip }
변화와 기록의 사본을 생성하는 함수를 작성
레코드로이 두 함수를 메서드로 넣으려는 경우 대신 쓸 내용
type Switch =
{ State : State }
member this.flip =
{ this with State = this.State.flip }
member this.flipMany times =
[1 .. times]
|> List.fold (fun (sw : Switch) _ -> sw.flip) this
이 작업에 문제가 있습니까? 똑같이 효율적입니까? 매번 다른 객체에 sw.flip
함수를 호출하는 것이 약간 불편합니다.
편집 : 이것은 내 질문을 설명하기위한 간단한 예일뿐입니다. 내 질문에 기능을 flipMany
flipMany
메서드를 사용하여 레코드를 비교하는 방법에 있습니다. 구현은 순진 할 수도 있지만 두 경우 모두 동일합니다.
'flip '에 대한 다중 호출을 통해'flipMany'를 구현할 필요가 없습니다.'times % 2 = 0'은 뒤집지 않는다는 것을 의미합니다. –