Question

J'ai eu envie d'essayer le FDX démo mais il m'a donné une série d'erreurs et d'avertissements en raison de problèmes de compatibilité, donc j'ai essayé de le faire fonctionner correctement. Le code complet est sur un pastebin .

Je vais avoir du mal avec le code ici:

  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

ce qui me donne l'erreur suivante dans F # interactive.

mouvement-sample.fs (438,53)

: FS0001 d'erreur: incompatibilité de type. Attendre un
((( 'A *' b) la liste -> 'c) * ((' a * 'b) la liste ->' d)) ref
mais étant donné un
(Float [,] * float [,]) ref.
Le type '(' a * « b) la liste -> 'c' ne correspond pas au type 'float [,]'

Merci pour toute aide!

Était-ce utile?

La solution

Je n'ai pas eu le temps de prendre un bon coup d'oeil, mais essayez de changer la définition de meshGet à

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

EDIT

En fait, mieux encore, on dirait qu'il ya une copie plus fraîche à

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

vous devriez l'utiliser plutôt que les années-ancien posté sur hubfs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top