F#程序设计-入门(3)

F#互动

 

在前两篇文章中,我们介绍了两个小程序,一个是用记事本编写的,一个是用IDE编写的,无论用哪种工具,都离不开编译、运行这两个步骤,作为一个刚接触F#语言的人说来,每个实例都需要用这种方法来运行,就显得很麻烦了。有没有别的办法了呢?有。在F#中,提供了一个交互式工具F# Interactive(FSI),通过这个工具,我们就能像是用Ruby、Erlang等开发语言的shell一样,完全不必经过手工编译这个环节。这对于经常需要检验某个类型或者某个函数是否正确来说,无疑提供了方便之门。

     FSI工具跟FSC一样,都在F#的安装目录之下,启动FSI后,显示如下信息:

    C:/Program Files/Microsoft F#/v4.0>Fsi

    Microsoft F# Interactive, (c) Microsoft Corporation, All Rights Reserved
    F# Version 1.9.7.4, compiling for .NET Framework Version v4.0.21006

    For help type #help;;

    >

FSI接受F#代码,编译和执行它,然后打印出运行结果,这使你可以快速方便地实践,而不需要通过创建新的F#项目或者为了看一个结果而编译整个项目。在C#中,修改了一个小小的代码,而为了验证结果的正确性,我们必须编译并且运行整个应用程序,这显得很繁琐,况且有时还不止修改一次。即使使用Visual Studio调试时立即窗口,你只限于使用表达式而实际上不能写,如定义代码,新的函数和类。下图显示的是在控制台总执行FSI的情景:


    在Visual Studio中,启动F#互动窗口是通过使用Ctrl+Alt + F组合键来实现的。一旦FSI互动窗口可用,它将接受F#代码直到你输入两个分号";;"并且按回车键才结束,输入的代码将被编译并且执行,如下图:

 

 

在每个代码段输入到FSI后,每个定义的变量将会被显示到下一行,并且会根据初始化的值显示这个变量的类型。如果表达式是左无名,默认情况下,它将被称为"it",如语句"x+y;;"执行后,显示"val it:int=50"。

       FSI大大简化了测试和调试应用程序,在Visual Studio的调试状态中,你可以通过Alt+Enter组合键把高亮显示的代码从当前项目输入到FSI互动窗口中,并且在FSI互动窗口中显示值。

 

 

      除了在Visual Studio中方便调试之外,我们还可以在控制台中利用FSI来编写函数以及类型。当然,在控制台编写的代码都是保存在内存中的,一旦你关闭了控制台或者退出了FSI,这些代码也就不存在了,下面简单介绍一下在控制台中怎么利用FSI来编写一个函数和类型。

第一个函数sizeOfFolder的作用是显示给定的文件夹内所有文件的大小,代码片段如下:

这里要注意的是,在FSI交互窗口中写代码也要遵循F#的空格缩进规则,否则也将会编译不过的,现在我们在FSI交互窗口中调用这个已经写好的函数。
> sizeOfFolderPiped "D:/Ico";;
val it : int64 = 3223L
>

将显示D:/Ico目录下所有文件的大小总和。

      接下来是用FSI交互窗口写一个类型,在F#中没有class的关键字,如果在F#需要创建自定义类型,将用到type关键字。现在我们简单来实现一个类型,里面将会用到方法、属性。


下面为调用代码:

> let myclass = new MyClass();;(*创建一个类型的*)

val myclass : MyClass

> myclass.X <- 30;;(*给X属性赋值*)
val it : unit = ()
> myclass.Y <- 30;;(*给Y属性赋值*)
val it : unit = ()
> myclass.Add();;(*调用方法*)
val it : int = 60
>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值