2017-02-24 5 views
5

私は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 

これはなぜですか?

+5

ものは関数ではありません。 – SLaks

答えて

7

私はあなたがこの行が何を意味するのか誤解していると思う:

let a = 
    System.Console.WriteLine("Function A") 

それが割り当てSystem.Console.WriteLine("Function A")aの結果を。あなたはそれを実行した場合、あなたはaunitとして入力されて表示されます:

val a : unit =() 

、その時の「機能A」すでにコンソールに書き込まれました。

let a() = 
    System.Console.WriteLine("Function A") 

それは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

はい、それは私が探しているものです。明確にしていただきありがとうございます。それははるかに理にかなっています。 –

関連する問題