博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
F# 笔记
阅读量:6227 次
发布时间:2019-06-21

本文共 1722 字,大约阅读时间需要 5 分钟。

先前用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
) = 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.Textlet 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 * Treelet 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

 

转载于:https://www.cnblogs.com/icyJ/archive/2013/03/18/FSharp.html

你可能感兴趣的文章
实践:GNU构建系统
查看>>
扩展spring schema文件
查看>>
经典汉诺塔问题
查看>>
html5整理(一)
查看>>
spring-cloud-config的encrypt功能
查看>>
javascript引用类型之Date
查看>>
Fiddler调试(适合修复线上bug和直接调试线上问题)
查看>>
Vue+WebSocket+ES6+Canvas 制作【你画我猜】小游戏
查看>>
Java反射的封装
查看>>
精益 React 学习指南 (Lean React)- 1.1 React 介绍
查看>>
基于Flink的标准SQL操作支持
查看>>
用纯Javascript实现React Native的文件上传
查看>>
通信协议设计要点
查看>>
结构体中的 Lazy 属性探究
查看>>
iOS,Android网络抓包教程之tcpdump
查看>>
听飞狐聊JavaScript设计模式系列01
查看>>
CUBA Studio 8.2 发布,企业级应用开发平台
查看>>
玩转 React 服务器端渲染
查看>>
druid配置数据库连接使用密文密码
查看>>
手把手教你如何新建scrapy爬虫框架的第一个项目(下) ...
查看>>