如何在扩展方法中传递可选参数?

How do I pass optional arguments in extension methods?

这段代码不起作用,因为我得到的 optionsoptional 参数混淆了。

如何将选项传递给可选参数?

type Foo() = 
  member this.Bar(?name : string, ?number : int) = 
    let name = defaultArg name "johndoe"
    let number = defaultArg number 0

    name + "-" + string number



[<AutoOpen>]
module FooExtensions = 

  open System
  
  type Foo with
    member this.Bar(?name : string, ?numberAsString : string) = 
      let number = 
        numberAsString
        |> Option.map Int32.Parse

      this.Bar(name=name, number=number) // Invalid

您可以在调用方法时将问号前缀放在命名参数上,以表示您希望将值作为 option.

传递
this.Bar(?name=name, ?number=number)