Pregunta

bastante nuevo a los lenguajes funcionales, pero estoy mantener el código de otra persona con una gran cantidad de F #. Puede ofrecer a nadie una idea de esto?

        let mtvCap = Rendering.MTViewerCapture(mtViewer)
        mtvCap.GetCapture()
        mtvCap.ToWpfImage()
        grid.Children.Add(mtvCap.ImageElement)

MTViewer.ImageViewer es de tipo System.Windows.Controls.Image, y la rejilla es System.Windows.Controls.Grid.

Una vez más, el error es: El tipo int no es compatible con la unidad de tipo

¿Fue útil?

Solución

F # no permite hacer caso omiso de los valores de retorno en silencio. El tipo unit es la versión F # 's de void. Así que el error está diciendo esencialmente

  

Me esperaba que la declaración no tener retorno, sino que devuelve un valor int

O lo contrario. Tiendo a leer correctamente este mensaje de error.

Lo más probable ocurra es uno de los siguientes

  1. El método en cuestión está a la espera de un valor de retorno int pero el método Add retornos vacíos por lo tanto, F # está solamente pidiendo un valor de retorno
  2. El método en cuestión se escribe como unit pero Add devuelve un int y F # que tiene que pasar por alto el valor.
  3. Los valores de retorno o GetCapture ToWpfImage que deben manejarse de manera explícita.

En los últimos 2 casos se puede solucionar este pasando el valor de la función ignore

mtvCap.GetCapture() |> ignore
mtvCap.ToWpfImage() |> ignore
grid.Children.Add(mtvCap.ImageElement) |> ignore

Después de cavar alrededor de un pedacito Creo # 2 es el tema porque UIElementCollection.Add devuelve un valor int. Intente modificar la línea final para tener este aspecto

grid.Children.Add(mtvCap.ImageElement) |> ignore

Otros consejos

Me sabe muy poco acerca de F #, pero por lo que recuerdo, "unidad" es su manera de decir "vacío", por lo que voy a suponer que usted está tratando de asignar el "valor de retorno" de una función que doesn' t tiene uno, a un varaible. Eso haría que el candidato más probable es que esta línea:

let mtvCap = Rendering.MTViewerCapture(mtViewer)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top