Parámetros opcionales y tipos de opciones con F #
Considere el siguiente código:
type Test () =
member o.fn1 (?bo) = 1
member o.fn2 (?bo) = o.fn1 bo
member o.fn3 (?bo) = 1 + bo.Value
member o.fn4 (?bo) = o.fn3 bo
Mientrasfn1
yfn2
funciona bien,fn4
produce el siguiente error:
init.fsx (6,30): error FS0001: se esperaba que esta expresión tuviera el tipo int pero aquí tiene el tipo 'una opción
MSDN estados:
os parámetros opcionales se interpretan como el tipo de opción F #, por lo que puede consultarlos de la forma habitual en que se consultan los tipos de opciones, utilizando una expresión de coincidencia con Some y None.
Para mí, los parámetros opcionales no se interpretan como el tipo de opción F #, de lo contrario el código se compilaría. Además, no entiendo por qué, cuando paso el mouse sobre?bo
infn3
la información sobre herramientas diceval bo: int option
pero desde afuera solo esperaint
. Esperaría un comportamiento de no aceptar nada, int, Some int y None. Y como última nota, no entiendo por quéfn2
funciona perofn4
no
Gracias por la aclaració