2014-09-03 46 views
0

沒有人知道一個很好的資源來解釋什麼時候可以在ada中使用object.method符號?ada中的object.method符號

例如:

person.walk(10); 

我已經做了一些谷歌搜索,並沒有意識到這一點呢。它只適用於標記的記錄嗎?

我使用GPS作爲我的Ada IDE,我非常喜歡能夠去bla.<type something>並獲得建議的方法來調用。

我也有點困惑,爲什麼點符號不能用於任何第一個參數匹配有問題的類型。

感謝

馬特

+1

另請參閱[_prefixed notation_](http://www.adaic.org/resources/add_content/standards/05rat/html/Rat-2-3.html)。 – trashgod 2014-09-03 19:29:56

+1

最好的資源是[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

回答

5

是的,它僅適用於標籤的記錄(虛函數表來找到相應的方法)。它可以用於所有基本操作,或用於在同一包中定義的'類操作。 符號的好處之一是你不需要定義類型的包裝上的「with」。 我們傾向於在這些日子裏更頻繁地使用標記類型,以便我們可以確實使用點符號。

+0

「vtable用於查找相應的方法」並非總是如此。該操作可以是一個子程序,其第一個參數是一個全班範圍類型,在這種情況下,它不是一個調度操作(除非第二個或其他參數碰巧是標記類型),因此不會在vtable中。 – ajb 2014-09-04 03:48:14

1

點符號也適用於任務受保護的類型。