在Visual Studio 2008中,编译F#程序时,会出现警告(但不是错误),但是由于这个警告却使你的程序无法运行,不过大多数据这些警告都会有提示,提示你用.NET里的函数代替F#中的某些函数,但是这些.NET中的函数又不能像在C#中那样使用.
例如:
- #light
- let one = ["one "]
- let two = "two " :: one
- let three = "three " :: two
- let rightWayRound = List.rev three
- let printList l =
- List.iter print_string l
- print_newline()
- let main() =
- printList one
- printList two
- printList three
- printList rightWayRound
- main()
复制代码上面的程序在Visual Studio 2008编译时,会出现警告,提示List.iter print_string l一行中print_string要用Console.Write()代替,但是如果直接把print_string直接用Console.Write()或Console.Write也还是不行.
那么到底如果使用Console.Write()代替print_string在Viusal Studio 2008中通过编译呢,
注意Console.Wirite有多个重载版本,重载时要指明版本,这要用到匿名函数并对参数进行注解
所以上面的List.iter print_string l
可改写为List.iter (fun (x:string) -> Console.Write(x)) l
这样就可以通过编译了.
文/
mcjtcnblog 出处/博客园