2015-05-29 49 views
2

爲了我自己的安心,我想知道爲什麼在我的AssemblyInfo.fs文件的最後一行中,需要添加一個()以便編譯它。你稱這種語法是什麼?F#:爲什麼這些括號是必需的(語法)

namespace TestComComponentFSharp 

open System.Reflection 
open System.Runtime.CompilerServices 
open System.Runtime.InteropServices 

[<assembly: AssemblyTitle("TestComComponentFSharp")>] 
[<assembly: ComVisible(true)>] 
[<assembly: Guid("0B684F15-DC37-40C0-A785-EDF1A63BBAF5")>] 
[<assembly: AssemblyKeyFile("KeyFile.snk")>] 

[<assembly: AssemblyVersion("1.0.0.0")>] 
[<assembly: AssemblyFileVersion("1.0.0.0")>] 

() 

回答

5

您需要將某些組件屬性應用於某些元素。這是空的()或做()是什麼。它被稱爲「空表達式」 - 它返回一個單位。

+0

謝謝。我瞭解這些屬性必須適用於某些內容。但是,我不認爲它「返回」任何東西,因爲如果我用它來替換它,例如一個整數'0'或一個字符串文字,它給了我錯誤信息「命名空間不能包含值,考慮使用一個模塊來保存你的值聲明。」我是否正確地說'()'既是'void' /'unit'的文字,也是'empty expression'這是空塊語法? –

+2

不,(()或「空表達式」仍然返回一個單位。 F#總是要返回一些東西。 「A」單位「用於保存語言句法所需的值,但不需要或不需要的值時。」採取從https://msdn.microsoft.com/en-us/library/dd483472.aspx – Kevin