使用Fsharp 探索 Dotnet 平台

Fsharp的交互开发环境使得我们在了解DotNet平台时能够快速的获得需要的反馈。

反馈在任何技艺的磨练过程中必不可少,我认为也是最重要的环节之一。在“一万小时天才理论”中,著名的髓鞘质就是在快速有效的反馈过程中产生的。虽然在不确定哪些训练是最有效的训练前,大量的练习不见得有多大好处,相对结果的收集对于自己编程技艺的获得却必定有极大的帮助。

Visual Studio 2013中内嵌了对 FSharp的支持。我最常用的命令有:

  1. 选中指定代码后[Alt+Enter] ==>执行代码
  2. 在一行的末尾[Ctrl+']==>执行此行代码
  3. 在交互界面中输入完代码后,打两个分号";;",再按[shift + Enter] ==> 执行代码

下面是一个简单的小例子

module ExploreDotNet

System.IO.Directory.SetCurrentDirectory(__SOURCE_DIRECTORY__)

//System.IO.Directory.GetCurrentDirectory()

open System

[<CLIMutable>]
type DateSerTest = 
    {
        Local:DateTime;
        Utc:DateTime
    }

let ser = new System.Xml.Serialization.XmlSerializer(typeof<DateSerTest>)

let d = {
    Local = DateTime.SpecifyKind(new DateTime(2014, 10, 1), DateTimeKind.Local)
    Utc = DateTime.SpecifyKind(new DateTime(2014, 10, 1), DateTimeKind.Utc)
}

let testSerialization(dt:DateSerTest) =
    let filename = "serialization.xml"
    use ms = new IO.MemoryStream()
    ser.Serialize(ms, o = dt)
    Text.Encoding.Default.GetString(ms.GetBuffer()) |> Console.WriteLine
    ms.Close()

testSerialization d

结果:

<?xml version="1.0"?>
<DateSerTest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Local>2014-10-01T00:00:00+08:00</Local>
  <Utc>2014-10-01T00:00:00Z</Utc>
</DateSerTest>

参考了www.fsharpforfunandprofit.com的代码。有意思的是我这里使用的是MemoryStream。在敲入代码的过程中对Stream,Serialization的概念虽然一开始有点模糊了,对于一些函数的返会值不是很明确;这时只要选中那些对象[Alt+Enter],结果就出现了。

 

 

 

posted @ 2014-06-12 15:00  rigid  阅读(289)  评论(0编辑  收藏  举报