我想知道您是否可以在 F# 中添加类似“null-safe”-operator 之类的东西。我知道在 C# 中可能会有这样的运算符用于下一个更大的版本。
如果没有办法实现这种行为,有没有办法包装一个语句,该语句可能会将 aNullReferenceException
放入捕获异常并返回的块中null
。
我想到了类似的东西:
let sth = %% <@ someobject.method().another().andAnother() @>
where%%
是执行表达式并检查异常的自定义运算符。
我做的一个尝试是:
open Microsoft.FSharp.Quotations
open Microsoft.FSharp.Linq.QuotationEvaluation
let (~%%) (right:Expr) =
try
right.CompileUntyped()
right()
with
| ex -> null
但这并没有达到我想要的效果(实际上它甚至没有编译:)
我通读了:
- http://msdn.microsoft.com/de-de/library/ee370577.aspx
- http://msdn.microsoft.com/de-de/library/dd233197.aspx
- 还有一些 msdn 文档
有谁知道如何优雅地为链式方法创建这样一个单行尝试捕获?