arâmetros opcionais e tipos de opção usando F #
Considere o seguinte 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
Enquantofn1
efn2
funciona muito bem,fn4
produz o seguinte erro:
init.fsx (6,30): erro FS0001: Era esperado que essa expressão tivesse o tipo int, mas aqui o tipo 'a option
MSDN estados:
Parâmetros opcionais são interpretados como o tipo de opção F #, para que você possa consultá-los da maneira regular que os tipos de opção são consultados, usando uma expressão de correspondência com Alguns e Nenhu
Para mim, os parâmetros opcionais não são interpretados como o tipo de opção F #, caso contrário, o código seria compilado. Além disso, não entendo por que, quando passo o mouse sobre?bo
emfn3
a dica de ferramenta dizval bo: int option
mas de fora espera apenasint
. Eu esperaria um comportamento de não aceitar nada, int, Some int e None. E como última nota, não entendo por quefn2
funciona masfn4
não
Obrigado pela clarificaçã