2010-08-17 2 views
7

기능 언어에 익숙하지 만 다른 사람의 코드를 F #으로 많이 유지하고 있습니다. 아무도 이것에 대한 통찰력을 제공 할 수 있습니까?F # - int 형식이 형식 단위와 호환되지 않습니다.

 let mtvCap = Rendering.MTViewerCapture(mtViewer) 
     mtvCap.GetCapture() 
     mtvCap.ToWpfImage() 
     grid.Children.Add(mtvCap.ImageElement) 

MTViewer.ImageViewer 타입의 System.Windows.Controls.Image이며, 격자 System.Windows.Controls.Grid이다. 다시

이 오류는 다음과 같습니다 int 형은

+4

브라보! 대부분의 개발자는 시간 재 작성에 낭비했습니다. 당신이 옳은 일을하고 있다는 것을 알게되어서 기쁩니다. – pblasucci

답변

14

F 번호를 허용하지 않습니다 즉,이 라인을 가장 가능성있는 후보를 만들 것입니다. unit 유형은 F # 버전 void입니다. 그래서 오류가 난 더 수익이없는 것으로 본질적으로

문 예상 말하는 대신이 int 값

또는 반대를 반환합니다. 나는이 오류 메시지를 잘못 읽는 경향이있다.

무엇 가능성이 일어나고있는 것은 단지 반환 값

  • 문제의 방법을 요구하는 int 반환 값하지만, 따라서 무효 F 번호를 반환 Add 방법을 기대하고 질문에 다음

    1. 방법 중 하나입니다 unit으로 입력되었지만 Addint을 반환하고 F #이 (가) 값을 무시해야합니다.
    2. 명시 적으로 처리해야하는 반환 값은 GetCapture 또는 ToWpfImage입니다. 당신이 조금 주위에 파고 후 ignore 기능

      mtvCap.GetCapture() |> ignore 
      mtvCap.ToWpfImage() |> ignore 
      grid.Children.Add(mtvCap.ImageElement) |> ignore 
      

      에 값을 전달하여이 문제를 해결할 수있는 마지막이 경우에

  • 나는 UIElementCollection.Addint 값을 반환하기 때문에 # 2 문제 믿습니다. 최종 줄을 다음과 같이 수정하십시오.

    grid.Children.Add(mtvCap.ImageElement) |> ignore 
    
    +0

    네, 정확하게 그럴 것 같습니다. 고마워요. – mkocubinski

    1

    내가 F 번호에 대한 현저 조금 알고 있지만, 내 기억으로, "단위", "무효"라는 자신의 방법입니다 형 장치와 호환되지 않습니다, 그래서 난 여러분이 가지고 있지 않은 함수의 "반환 값"을 varaible에 할당하려한다고 생각할 것입니다. 당신은 자동으로 반환 값을 무시하는

    let mtvCap = Rendering.MTViewerCapture(mtViewer)

    +0

    답은 기술적으로는 정확하지만, 반환 결과에 관심이 없다면 JaredPar의 솔루션으로 가고 싶을 것입니다. – Robert

    관련 문제