[英]Ord function implementation in Delphi
純粹作為家庭練習,旨在更好地理解一些語言基礎,我試圖重新實現Ord
功能,但我遇到了一個問題。
實際上,現有的Ord
函數可以接受各種不同類型的參數( AnsiChar
, Char
, WideChar
, Enumeration
, Integer
, Int64
),並且可以返回Integer或Int64。
我無法弄清楚如何聲明同一個函數的多個版本。
應該如何在Delphi中編碼?
我無法弄清楚如何聲明同一個函數的多個版本。
它被稱為函數重載 。 每個版本的輸入參數必須不同,返回類型無關緊要。 例如:
function Ord(X: Char): Integer; overload;
begin
// Whatever here
end;
function Ord(X: Integer): Integer; overload;
begin
// Something
end;
// etc.
Ord
無法用Delphi編碼。 雖然您可以使用overload
指令來編寫具有相同名稱的多個函數,但是您無法以這種方式編寫Ord
函數,因為它適用於任意數量的參數類型而無需多個定義。 (無論你編寫多少Ord
重載,我總是可以提出一個類型,你的函數不會接受,但編譯器的意願。)
它因為編譯魔術而以這種方式工作。 編譯器知道Ord
以及程序中的所有序數類型,因此它會在線執行函數的操作。 其他編譯器魔術函數包括Length
(魔法,因為它接受任意數組類型), Str
(魔法因為它接受寬度和精度修飾符)和ReadLn
(魔法,因為它接受任意數量的參數)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.