Ram*_*nir 16
见艾丹的评论.
如果你坚持,你可以这样做:
let mutable x = Unchecked.defaultof<int>
Run Code Online (Sandbox Code Playgroud)
这将分配绝对零值(0对于数字类型,null对于引用类型,对于值类型,struct-zero).
有趣的是要知道为什么作者需要在F#中使用它(预期用途的简单例子就足够了).
但我想,当你在普通情况下,一个可以使用未初始化的变量在C#中,当你调用一个函数out的参数:
TResult Foo<TKey, TResult>(IDictionary<TKey, TResult> dictionary, TKey key)
{
TResult value;
if (dictionary.TryGetValue(key, out value))
{
return value;
}
else
{
throw new ApplicationException("Not found");
}
}
Run Code Online (Sandbox Code Playgroud)
幸运的是在F#中你可以使用更好的语法来处理这种情况:
let foo (dict : IDictionary<_,_>) key =
match dict.TryGetValue(key) with
| (true, value) -> value
| (false, _) -> raise <| ApplicationException("Not Found")
Run Code Online (Sandbox Code Playgroud)