鑑於這種F#庫代碼在F#中是否有空括號用於表示沒有參數?
從主
open FileMaint
let log_file = FileMaint.fm.generate_log_file
從庫
module FileMaint
.
.
.
[<AutoOpen>]
(* return_unique_file_name just returns as close to a unique file name piece based on clock time. *)
module fm =
(* Checks for presense of a file name. *)
let is_file_present file_name =
let rc =
if File.Exists file_name then
true
else
false
rc
(* Initialize a log file. *)
let generate_log_file =
let log_file_name =
if File.Exists(base_log_file) then
test_and_reset_unique_file_name local_dir base_log_file
else
base_log_file
use fH = new StreamWriter(log_file_name, true)
fH.WriteLine(generate_time_stamp + ": " + log_file_name + " initialized.")
從我的 「主」,我可以進入通話is_file_present
,但我不能踏入,也不會generate_log_file
執行。
但是,在generate_log_file
庫函數(如generate_log_file()
)上定義括號之後,然後調用它,函數就會執行(並且我可以進入該函數)。
因此,看起來空括號表示函數沒有參數時的佔位符。那是對的嗎?
可能還想包括您的主代碼(或至少相關位) – Will
@我會添加一些額外的上下文。 – octopusgrabbus
'()'只是單位。在F#中,每個函數都必須有一個參數,並且每個函數都必須返回一些內容。如果你沒有將任何變量傳遞給函數,用()表示。如果返回值有副作用(例如打印到屏幕或寫入文件),它也會返回()。 – s952163