zoukankan      html  css  js  c++  java
  • Fsharp 类中的空字段

    fsharp设计之初就尽可能的避免使用null。在我的编程经验中null真是个错误之源,垃圾代码之源,95%的系统奔溃之源。其实在设计之初就应该考虑你的系统需要null表现什么?是未初始化的状态,还是一个未知状态,或者就是一个空状态。这些歧义性造成一个值可能被随心所欲的误用。所以如果没有强有力的约束还是尽可能的少用为妙。

    但fsharp还需要和别的系统进行交互,也必不可少需要与null值进行交互。这里有个原则就是尽可能不要产生null,简单的使用null。对于API传过来的null,判断一下就是了。

    还有一种情况就是类中字段如何赋一个初值。在有一些情况下在构造函数调用时,我们可能还不能确定这些值。首先应考虑使用option,因为None对应的含义更明显。如果还是希望以null的形式提供类字段。可以这么写

    let mutable x = Unchecked.defaultof<FileSystemWatcher>
    x <- new FileSystemWatcher()

    使用option

    let temp = ref None
    // Code that may call: temp := Some(foo())
    match !temp with 
    | None -> bar(arg)
    | Some(temp) -> temp
  • 相关阅读:
    容器之队列的使用
    容器之栈的使用
    rapidxml的使用
    C++判断文件夹是否存在并创建文件夹
    VS2017,不能将const char *转为char *
    CSS_day01_选择器
    HTML_day02_列表
    HTML_day01基本标签
    python_day3
    python_day2
  • 原文地址:https://www.cnblogs.com/weloveamber/p/6959340.html
Copyright © 2011-2022 走看看