簡體   English   中英

Delphi中的Ord函數實現

[英]Ord function implementation in Delphi

純粹作為家庭練習,旨在更好地理解一些語言基礎,我試圖重新實現Ord功能,但我遇到了一個問題。

實際上,現有的Ord函數可以接受各種不同類型的參數( AnsiCharCharWideCharEnumerationIntegerInt64 ),並且可以返回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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM