Intenté usar una tupla para crear una nueva instancia de una clase definida en F #. Para duplicar el problema, probé el siguiente código.F # constructor no acepta tuplas?
type test(x: int, y:int) =
let distance =
x * x + y * y |> float |> sqrt
new (x: int, y:int, z:int) =
new test(x, y)
let args = 1, 2
let test2 = new test(args)
Se queja de que
de error 1 El miembro o el objeto 'prueba' constructor no toma 1 argumento (s). Se encontró una sobrecarga teniendo 2 argumentos.
Si elimino el constructor no predeterminado, todo está bien. No entiendo por qué se convierte en dos/tres argumentos en lugar de tuplas.
Muchas gracias.
No me sorprendió que el compilador no trate el constructo o argumento como una tupla en este caso, pero estaba bastante sorprendido de que no pueda usar patrones en el enlace del constructor, es decir, 'escriba Test ((x, y)) = ...' (o cualquier otro patrón). ¿Hay alguna razón para eso? –
Buena pregunta, no sé. – Brian
Muchas gracias. F # es realmente confuso en algunos aspectos. – LLS