gpt4 book ai didi

c# - 如何在 F# 中编写此 C# 代码

转载 作者:太空狗 更新时间:2023-10-29 17:30:37 25 4
gpt4 key购买 nike

我习惯用 C# 编写这样的代码:

SomeObj obj;
try{
// this may throw SomeException
obj = GetSomeObj();
}catch(SomeException){
// Log error...
obj = GetSomeDefaultValue();
}

obj.DoSomething();

这是我在 F# 中翻译它的方式(obj 是一个列表):

let mutable obj = []
try
obj <- getSomeObj
with
| ex ->
// Log ex
obj <- getSomeDefaultValue

doSomething obj

有没有什么方法可以在 F# 中不使用可变变量来做到这一点?在 F# 中是否有更“优雅”的方式来处理这种情况?

谢谢!

最佳答案

F#-ish 方法是在两个分支中返回相同类型的表达式:

let obj =
try
getSomeObj()
with
| ex ->
// Log ex
getSomeDefaultValue()

doSomething obj

在 F# 中,您可以使用 option 类型来处理异常。当没有明显的默认值并且编译器强制您处理异常情况时,这是一个优势。

let objOpt =
try
Some(getSomeObj())
with
| ex ->
// Log ex
None

match objOpt with
| Some obj -> doSomething obj
| None -> (* Do something else *)

关于c# - 如何在 F# 中编写此 C# 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15881206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com