zoukankan      html  css  js  c++  java
  • F# 笔记

    先前用F#的误点。F#相较C#,真正强大的是函数式编程,而c#是面向对象的编程,写代码时,c#面对的是变量,而F#面对的是函数,好的F#代码尽量少的声明一个名称关联到值。这样在执行代码时可以尽量少的占用空间,从而提高效率,这是提高效率的主要地方,谨记!!!!

    静态方法:

    static member GetContacts (lstContact:(int * int) seq) (key:int)  = 
    ()

    静态私有方法

    static member private GetContacts (lstContact:(int * int) seq) (key:int)  = 
    ()

     继承接口

    type DivDetailAna(divDetail:DivDetail, anaDetails : Set<DivPAnaBase>) =
        interface System.IComparable with
            override this.CompareTo(other) = 
                match other with
                | :? DivDetailAna as oth -> (this.DivDetail.P * (-1)).CompareTo(oth.DivDetail.P * (-1))
                | _ -> 1

    继承类

    type DivPAnaComplexUnit(paper:LayoutResoultComplex, machine:int, cost:float, costID:int) =
        inherit DivPAnaBase(paper.ColumnsCount * paper.RowsCount ,machine, cost, costID)

    记录:

    记录字段与类不同,它们会作为属性自动公开,并用于创建和复制记 录。 记录构造也不同于类构造。 在记录类型中,您不能定义构造函数。与联合类型和结构类型类似,记录具有结构相等性语义。 类具有引用相等性语义。

    记录的定义:字段 + 成员

    type OptionAA = 
        {
            ID: int;
            Name:string;
            mutable Text:string;
        }
        member x.AAA() = printfn "%A" x.Text
    let test = {ID = 0; Name = "AA"; Text = "YYY"}
    test.Text <- "ZZZ"
    printfn "%A" (test.AAA())

     可区分联合:

    可区分联合对于以下数据很有用:异类数据;可有特殊用例(包括有效用例和错误用例)的数据;每个实例的类型不同的数据;可区分联合还可用作小对象层次结构的备用项。 此外,递归的可区分联合用于表示树数据结构。

    type type-name =
       | case-identifier1 [of type1 [ * type2 ...]
       | case-identifier2 [of type3 [ * type4 ...]
       ...

    比较普遍的用法,二叉树。

    type Tree =
        | Tip
        | Node of int * Tree * Tree
    
    let rec sumTree tree =
        match tree with
        | Tip -> 0
        | Node(value, left, right) ->
            value + sumTree(left) + sumTree(right)
    let myTree = Node(0, Node(1, Node(2, Tip, Tip), Node(3, Tip, Tip)), Node(4, Tip, Tip))
    let resultSumTree = sumTree myTree
  • 相关阅读:
    推荐7个GitHub上不错的Python机器学习项目
    值得收藏的45个Python优质资源
    9 个鲜为人知的 Python 数据科学库
    小众Python库介绍
    Sebastian Ruder : NLP 领域知名博主博士论文面向自然语言处理的神经网络迁移学习
    学习Python 新去处:Python 官方中文文档
    图像超分辨率项目帮你「拍」出高清照片
    入坑机器学习?听听MIT在读博士的AI心得
    自然语言处理领域重要论文&资源全索引
    旷视等Oral论文提出GeoNet:基于测地距离的点云分析深度网络
  • 原文地址:https://www.cnblogs.com/icyJ/p/FSharp.html
Copyright © 2011-2022 走看看