沒有人知道一個很好的資源來解釋什麼時候可以在ada中使用object.method
符號?ada中的object.method符號
例如:
person.walk(10);
我已經做了一些谷歌搜索,並沒有意識到這一點呢。它只適用於標記的記錄嗎?
我使用GPS作爲我的Ada IDE,我非常喜歡能夠去bla.<type something>
並獲得建議的方法來調用。
我也有點困惑,爲什麼點符號不能用於任何第一個參數匹配有問題的類型。
感謝
馬特
沒有人知道一個很好的資源來解釋什麼時候可以在ada中使用object.method
符號?ada中的object.method符號
例如:
person.walk(10);
我已經做了一些谷歌搜索,並沒有意識到這一點呢。它只適用於標記的記錄嗎?
我使用GPS作爲我的Ada IDE,我非常喜歡能夠去bla.<type something>
並獲得建議的方法來調用。
我也有點困惑,爲什麼點符號不能用於任何第一個參數匹配有問題的類型。
感謝
馬特
是的,它僅適用於標籤的記錄(虛函數表來找到相應的方法)。它可以用於所有基本操作,或用於在同一包中定義的'類操作。 符號的好處之一是你不需要定義類型的包裝上的「with」。 我們傾向於在這些日子裏更頻繁地使用標記類型,以便我們可以確實使用點符號。
「vtable用於查找相應的方法」並非總是如此。該操作可以是一個子程序,其第一個參數是一個全班範圍類型,在這種情況下,它不是一個調度操作(除非第二個或其他參數碰巧是標記類型),因此不會在vtable中。 – ajb 2014-09-04 03:48:14
點符號也適用於任務受保護的類型。
另請參閱[_prefixed notation_](http://www.adaic.org/resources/add_content/standards/05rat/html/Rat-2-3.html)。 – trashgod 2014-09-03 19:29:56
最好的資源是[RM 4.1.3(9.2)](http://www.ada-auth.org/standards/12rm/html/RM-4-1-3.html),它列出了那裏的可能性假設你瞭解術語(這不是最簡單的部分或最簡單的部分之一)。至於爲什麼點符號不能用於未標記的類型:由於在未標記類型是訪問類型時可能存在歧義,所以做出該決定,因爲隱含的「.all」使用相同類型的語法。我認爲。 – ajb 2014-09-04 03:53:46