質問

私は試してみたいと思っていました FDXデモ しかし、それは互換性の問題のために一連のエラーと警告を与えてくれたので、私はそれを正しく機能させようとしてきました。完全なコードはaにあります パステビン.

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

  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#Interactiveで次のエラーが得られます。

Motion-Sample.FS(438,53):エラーFS0001:タイプの不一致。期待する
((( 'a *' b)list-> 'c) *((' a * 'b)list->' d)ref
しかし、
(float [、] * float [、])ref。
タイプ '(' a * 'b)list->' c 'はタイプ' float [、] 'と一致しません

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

役に立ちましたか?

解決

見栄えを良くする時間がありませんでしたが、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に投稿された長年のものではなく、それを使用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top