Dan*_*iel 13 inheritance f# optional-arguments
以下代码无法编译.
type A(?arg) =
member __.Arg : string option = arg
type B(?arg) =
inherit A(arg) //ERROR expected type string but has type 'a option
Run Code Online (Sandbox Code Playgroud)
我假设这是因为必须提供选项的基础类型的实例,并且编译器处理传递Some/ None基于语法.
假设我的假设已被正确假设,是否有解决方法?是否可以传播可选参数?
des*_*sco 25
F#spec 8.13.5方法成员的可选参数
调用者可以使用以下技术指定可选参数的值:
通过使用与position匹配的普通,未命名参数.
type A(?arg) =
member __.Arg : string option = arg
type B(?arg) =
inherit A(?arg = arg)
printfn "1. %A" (B()).Arg // None
printfn "2. %A" (B("1")).Arg // Some "1"
printfn "3. %A" (A()).Arg // None
printfn "4. %A" (A("1")).Arg // Some "1"
Run Code Online (Sandbox Code Playgroud)