생성자를 함수로 전달할 방법이 있습니까?생성자 함수의 축약어
type foo =
| Foo of int
| Bar of int
let foo x = Foo x
let bar = fun x -> Bar x
기능 foo
및 bar
에 대한 속기이 있습니까? 함수로 생성자를 전달하려고하지만 fun x -> Bar x
을 작성하는 것은 다루기 힘들어 보입니다.
생성자를 함수로 전달할 방법이 있습니까?생성자 함수의 축약어
type foo =
| Foo of int
| Bar of int
let foo x = Foo x
let bar = fun x -> Bar x
기능 foo
및 bar
에 대한 속기이 있습니까? 함수로 생성자를 전달하려고하지만 fun x -> Bar x
을 작성하는 것은 다루기 힘들어 보입니다.
camlspotter의 대답은 충분히 가까이,하지만 귀하의 경우에는 Variantslib를 사용하고 유형 정의의 끝에서 with variants
를 추가 할 :
type foo = Foo of int | Bar of int
val bar : int -> foo = <fun>
val foo : int -> foo = <fun>
module Variants :
sig
val bar : (int -> foo) Variantslib.Variant.t
val foo : (int -> foo) Variantslib.Variant.t
end
Fieldslib : https://github.com/janestreet/fieldslib을 사용하십시오.
type foo = | Foo of int | Bar of int with fields
및 Fieldslib의 구문 확장자로 컴파일 :
같은 유형 정의에 with fields
접미사를 추가. 자동으로 foo
및 bar
을 자동으로 생성합니다.
Fieldslib은 다음과 같습니다
type foo = Foo of int | Bar of int with variants;;
다음 당신에게 제공 레코드의 경우 sum 유형이 아니라 그것은'type foo = {foo : int; bar : int} with fields'하지만 실제 예제에서는 그렇지 않습니다. – Virgile
오, 죄송합니다. 그렇다면 Fieldslib와 비슷한 P4 확장이 필요하지만 변형이 필요합니다. – camlspotter
답해 주셔서 감사합니다. 구문 분석 기능을 언어에 추가하는 것이 상대적으로 간단하다는 점에 감명을 받았지만 제 3 자 라이브러리를 다운로드해야한다는 점에 실망했습니다. –