0

FDX デモを試してみたいと思っていましたが、互換性の問題により一連のエラーと警告が表示されたため、正しく動作するように努めてきました。完全なコードはPastebinにあります。

ここのコードに問題があります:

  let drawSurf f (device:Device) =
  let m,n = meshDims !mesh in 
  let data = Array.init (n*m) (fun k ->
                                 let i,j = k2ij !mesh k in
                                 let x,y = meshGet !mesh (i,j) in
                                 let z = f (x,y) in // single precision f 
                                 (x,y,z))
  in
  let strips = triangleRows n m |> map (map (blendPlace !mesh data)) in
  List.iter (fun strip -> drawTriangeStrip strip device) strips;
  let m,n = meshDims !mesh in 
  let lines = gridLines n m in
  let lines = lines |> map (colorPlace !mesh data Color.Black) in
  drawLineList lines device

F#インタラクティブで次のエラーが表示されます。

motion-sample.fs(438,53): エラー FS0001: タイプが一致しません。
    ((('a * 'b) list -> 'c) * (('a * 'b) list -> 'd)) refが必要
ですが、
    (float [,] * float [,]) ref が指定されています。
タイプ '('a * 'b) list -> 'c' はタイプ 'float [,]' と一致しません

助けてくれてありがとう!

4

1 に答える 1

1

よく見る時間がありませんでしたが、meshGet の定義を次のように変更してみてください。

let meshGet (mesh:_[,]*_[,]) (i,j) = let X,Y = mesh in X.[i,j], Y.[i,j]

編集

実際には、さらに良いことに、より新しいコピーがあるようです

http://code.msdn.microsoft.com/fsharpsamples/Release/ProjectReleases.aspx?ReleaseId=2705

hubfsに投稿された何年も前のものではなく、それを使用する必要があります。

于 2009-07-19T22:04:05.680 に答える