I just read the information on this page, and while a new ? operator is mentioned, it’s quite unclear to me what would its usage be.
Could anyone please provide a quick explanation, post a code snipped of how would this operator be used and possibly mention a use case?
Edit: this is really awkward, I’ve noticed that the ? operator is no longer mentioned in Don’s release notes. Any idea of why is that?
I just read the information on this page , and while a new ?
Share
There are two new “special” operators in this F# release, (?) and (?<-). They are not defined, but they are available for overloading, so you can define them yourself. The special bit is how they treat their 2nd operand: they require it to be a valid F# identifier, but pass it to function implementing the operator as a string. In other words:
is desugared to:
and:
is desugared to:
A very simple definition of those operators could be:
Note that since the return type for the gettor is generic, you’ll have to specify it at use site in most cases, i.e.:
though you can still chain-call (?) (since first argument of (?) is also generic):
Another, more interesting, implementation is to re-use CallByName method provided by VB:
The advantage of that is that it will handle both properties and fields correctly, work with IDispatch COM objects, etc.