문제

자바스크립트에서 사용하는 시제품 라이브러리,다음과 같은 기능적인 건축이 가능합니다:

var words = ["aqueous", "strength", "hated", "sesquicentennial", "area"];
words.pluck('length');
//-> [7, 8, 5, 16, 4]

이 예제 코드에 해당하는

words.map( function(word) { return word.length; } );

궁금하는 경우 비슷한 가능한에서는 F#:

let words = ["aqueous"; "strength"; "hated";"sesquicentennial"; "area"]
//val words: string list
List.pluck 'Length' words
//int list = [7; 8; 5; 16; 4]

를 작성하지 않고도:

List.map (fun (s:string) -> s.Length) words

이것은 매우 유용 보일 때문에 나에게 그런 다음 없는 함수를 작성하를 위해 모든 속성을 액세스할 수 있습니다.

도움이 되었습니까?

해결책

나는 당신의 요구에서는 F#메일링 리스트가 있습니다.희망 내가 도움이 될 수 있습니다.

당신이 사용할 수 있습 type 확장자 및 리플렉션을하실 수 있습니다.우리는 간단한을 연장하는 일반 목록 형식으로 뽑는 기능입니다.그런 다음 우리가 사용할 수 있습니다 뽑()에 모든 목록.알 수 없는 숙박 시설 목록을 반환하는 오류와 함께 문자열을 그만 내용입니다.

type Microsoft.FSharp.Collections.List<'a> with
    member list.pluck property = 
        try 
            let prop = typeof<'a>.GetProperty property 
            [for elm in list -> prop.GetValue(elm, [| |])]
        with e-> 
            [box <| "Error: Property '" + property + "'" + 
                            " not found on type '" + typeof<'a>.Name + "'"]

let a = ["aqueous"; "strength"; "hated"; "sesquicentennial"; "area"]

a.pluck "Length" 
a.pluck "Unknown"

는 생성에 따라 결과에 대화형 창:

> a.pluck "Length" ;; 
val it : obj list = [7; 8; 5; 16; 4]

> a.pluck "Unknown";;
val it : obj list = ["Error: Property 'Unknown' not found on type 'String'"]

따뜻한 감사합니다,

DannyAsher

> > > > >

참고:사용하는 경우 <pre>각도를 괄호

<'a>
를 표시하지 않았지만 미리보기 창에서 그것을 잘 보았다.의 백틱 작동하지 않았습니다.했다 리조트에 당신은 도전하는 모든이며 잘못입니다.나는 생각하지 않는 것이 여기에 게까지 다시 FSharp 구문을 완벽히 지원합니다.

다른 팁

프로토 타입의 pluck 을 활용하는 것에서 Javascript object.method() 와 동일 object[method].

불행하게도 당신을 호출 할 수 없습니다 String.Length 하나 때문에 그것은 정체되는 방법입니다.할 수 있습 그러나 사용:

#r "FSharp.PowerPack.dll" 
open Microsoft.FSharp.Compatibility
words |> List.map String.length 

http://research.microsoft.com/fsharp/manual/FSharp.PowerPack/Microsoft.FSharp.Compatibility.String.html

그러나 사용 Compatibility 아마 일을 더 혼란을 찾는 사람들이 당신의 코드입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top