赞助商
在Visual Studio 2008中,编译F#程序时,会出现警告(但不是错误),但是由于这个警告却使你的程序无法运行,不过大多数据这些警告都会有提示,提示你用.NET里的函数代替F#中的某些函数,但是这些.NET中的函数又不能像在C#中那样使用.

例如:
  1. #light
  2. let one = ["one "]
  3. let two = "two " :: one
  4. let three = "three " :: two
  5. let rightWayRound = List.rev three
  6. let printList l =
  7. List.iter print_string l
  8. print_newline()
  9. let main() =
  10. printList one
  11. printList two
  12. printList three
  13. printList rightWayRound
  14. 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  出处/博客园
赞助商
赞助商
TOP