【问题标题】:F# type mismatch problem in DirectX demoDirectX 演示中的 F# 类型不匹配问题
【发布时间】:2009-07-19 18:47:19
【问题描述】:

我一直想试用FDX demo,但由于兼容性问题,它给了我一系列错误和警告,所以我一直在努力让它正常工作。 完整代码在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) 列表 -> 'c) * (('a * 'b) 列表 -> 'd)) 参考
但给了一个
(float [,] * float [,]) 参考
类型 '('a * 'b) 列表 -> 'c' 与类型 'float [,]' 不匹配

感谢您的帮助!

【问题讨论】:

    标签: f# directx demo pastebin


    【解决方案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 上发布的旧版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-10
      • 2015-03-18
      • 1970-01-01
      • 2021-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多