CLR全面透彻解析-F#基础 - 面向对象网 f# 学习 对象 - 面向对象技术开发

面向对象技术开发

会员投稿 投稿指南 站长资讯通告:
您的位置: 首页 > OOP语言 > F# > 正文

CLR全面透彻解析-F#基础

来源: www.bianceng.cn 阅读:

F# 是一种面向对象的新型函数编程语言,用于 Microsoft .NET Framework,已集成到本年度发行的 Microsoft Visual Studio 2010 中。F# 集简单、简洁的语法与高度的静态类型化于一身。这种语言能够胜任的任务从 F# Interactive 中的轻量探索性编程直到使用 Visual Studio 进行的基于 .NET Framework 的大型组件开发。

F# 设计为完全在 CLR 上运行。作为一种基于 .NET Framework 的语言,F# 充分利用了 .NET Framework 平台上丰富的库资源,可以用于构建 .NET 库或实现 .NET 接口。F# 还利用了大部分 CLR 核心功能,包括泛型、垃圾收集、尾调用指令和基本的公共语言基础结构 (CLI) 类型系统。

本文介绍 F# 语言的一些核心概念及其在 CLR 上的实现。

F# 简要概览

首先,我们来简单了解一下 F# 语言中的一些核心功能。要更多了解 F# 语言中的这些功能以及您感兴趣的其他概念,请参阅 F# 开发人员中心上的相关文档,网址为 fsharp.net。

F# 最基本的功能是 let 关键字,可将值与名称绑定。let 可用于绑定数据和函数值,可实现顶层绑定和本地绑定:

let data = 12

let f x =
   let sum = x + 1
   let g y = sum + y*y
   g x

F# 提供了几种核心数据类型,以及一种使用结构化数据(包括列表、类型化可选值和元组)的语法:

let list1 = ["Bob"; "Jom"]

let option1 = Some("Bob")
let option2 = None

let tuple1 = (1, "one", '1')

可以通过使用 F# 模式匹配表达式来匹配这些结构化数据类型与其他类型。模式匹配类似于在 C 语言之类的编程语言中使用 switch 语句,但提供了更多的方式从已匹配的表达式中匹配和提取部件,这有些类似于将正则表达式用于模式匹配字符串的方式:

let person = Some ("Bob", 32)

match person with
| Some(name,age) -> printfn "We got %s, age %d" name age
| None -> printfn "Nope, got nobody"

F# 充分利用 .NET Framework 库来执行许多任务,例如从各种各样的数据源访问数据。.NET 库在 F# 中的使用方式与在其他 .NET 语言中的使用方式相同:

let http url =
   let req = WebRequest.Create(new Uri(url))
   let resp = req.GetResponse()
   let stream = resp.GetResponseStream()
   let reader = new StreamReader(stream)
   reader.ReadToEnd()

与 C# 或 Visual Basic 类似,F# 也是一种面向对象的语言,可以定义任何 .NET 类或结构:

type Point2D(x,y) =
   member this.X = x
   member this.Y = y
   member this.Magnitude =
     x*x + y*y
   member this.Translate(dx, dy) =
     new Point2D(x + dx, y + dy)

另外,F# 支持两种特殊的类型:记录和可辨识联合。记录为具有命名字段的数据值提供了一种简单的表示形式,可辨识联合则是一种类型表达方式,其中包含多种不同的值,且每一种值中的关联数据各不相同:

type Person =
   { Name : string;
    HomeTown : string;
    BirthDate : System.DateTime }

type Tree =
   | Branch of Tree * Tree
   | Leaf of int

Tags:
相关文章列表: