功能语言还不是很新,但是我用很多F#维护别人的代码.任何人都可以提供一些洞察力吗?
let mtvCap = Rendering.MTViewerCapture(mtViewer)
mtvCap.GetCapture()
mtvCap.ToWpfImage()
grid.Children.Add(mtvCap.ImageElement)
Run Code Online (Sandbox Code Playgroud)
MTViewer.ImageViewer的类型为System.Windows.Controls.Image,而grid是System.Windows.Controls.Grid.
同样,错误是:int类型与类型单位不兼容
Jar*_*Par 14
F#不允许您以静默方式忽略返回值.类型unit是F#的版本void.所以错误基本上是在说
我希望语句没有返回,但它返回一个int值
或者相反.我倾向于错误地阅读此错误消息.
可能发生的事情是以下之一
int返回值,但方法Add返回void,因此F#只是要求返回值unit但是Add返回a int和F#需要你忽略该值. GetCapture或ToWpfImage返回值.对于最后两种情况,您可以通过将值传递给ignore函数来解决此问题
mtvCap.GetCapture() |> ignore
mtvCap.ToWpfImage() |> ignore
grid.Children.Add(mtvCap.ImageElement) |> ignore
Run Code Online (Sandbox Code Playgroud)
在挖掘了一下之后我相信#2是问题因为UIElementCollection.Add返回一个int值.尝试修改最后一行,如下所示
grid.Children.Add(mtvCap.ImageElement) |> ignore
Run Code Online (Sandbox Code Playgroud)