Fsharp的交互开发环境使得我们在了解DotNet平台时能够快速的获得需要的反馈。
反馈在任何技艺的磨练过程中必不可少,我认为也是最重要的环节之一。在“一万小时天才理论”中,著名的髓鞘质就是在快速有效的反馈过程中产生的。虽然在不确定哪些训练是最有效的训练前,大量的练习不见得有多大好处,相对结果的收集对于自己编程技艺的获得却必定有极大的帮助。
Visual Studio 2013中内嵌了对 FSharp的支持。我最常用的命令有:
- 选中指定代码后[Alt+Enter] ==>执行代码
- 在一行的末尾[Ctrl+']==>执行此行代码
- 在交互界面中输入完代码后,打两个分号";;",再按[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],结果就出现了。