F # نوع عدم تطابق المشكلة في DirectX Demo
سؤال
لقد كنت أرغب في تجربة 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) قائمة -> 'د)) المرجع
ولكن بالنظر إلى أ
(تعويم [،] * تعويم [،]) المرجع.
قائمة "('' '' ب) -> 'C' لا تتطابق مع نوع" تعويم [،] "
شكرا على اي مساعدة!
المحلول
لم يكن لدي وقت لأخذ مظهر جيد، لكن حاول تغيير تعريف 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؟release=2705.
يجب عليك استخدام ذلك بدلا من السنوات التي تم نشرها على HUBFS.