为什么我的应用程序执行从上到下
问题描述:
我以为我理解F#代码执行,但显然我错过了一些东西。当我运行以下为什么我的应用程序执行从上到下
#!/usr/bin/env fsharpi
let a =
System.Console.WriteLine("Function A")
let b =
System.Console.WriteLine("Function B")
let c =
System.Console.WriteLine("Function C")
c
b
a
我得到的输出:
Function A
Function B
Function C
所以,由于某种原因,它执行的功能,因为它的替代函数调用它们以相反的顺序读取它们。
这是为什么?
答
我想你误会这行的意思是:
let a =
System.Console.WriteLine("Function A")
它指定的System.Console.WriteLine("Function A")
的结果a
。如果你运行它,你会看到a
的类型为unit
:
val a : unit =()
而那个时候“功能A”已经写入控制台。
你可能想要的是a
是一个函数,而不是一个值:
let a() =
System.Console.WriteLine("Function A")
它可以通过a()
被调用。如果你把它们放在一起:
let a() =
System.Console.WriteLine("Function A")
let b() =
System.Console.WriteLine("Function B")
let c() =
System.Console.WriteLine("Function C")
c()
b()
a()
你会得到你所期望的:
Function C
Function B
Function A
+1
是的,这就是我要找的。谢谢你澄清。这更有意义。 –
那些不是功能。 – SLaks