2008-12-01 37 views
1

在C#語言中,當你引用一個數組元素時,你可以這樣寫:編程語言,您可以通過引用數組元素。 (點)

myclass.my_array ['element_name'] = new Point(1,1);

我想通過在地方backets的使用點指的名字與一個ELEMENT_NAME元素:

myclass.my_array.element_name =新的點(1,1);

您是否知道以上示例中存在與上述示例類似語法的語言?

您如何看待這個引用數組元素的例子?這是好的還是像我的英語寫作一樣糟糕?

親切的問候

回答

3

如果指定的屬性/變量實際上不存在,您可以通過處理屬性/變量訪問作爲索引器,以任何動態語言幾乎可以肯定地做到這一點。我懷疑許多動態語言已經在某些領域提供了這種功能。

在C#4中,如果你真的想要的話,你可以使你的對象像這樣行爲。

但是,我同意Mohit的問題中的隱含判斷 - 我認爲沒有理由認爲這比使用更常用的索引器語法更具可讀性,並且會使用於索引器的人看起來像索引器。

一個領域,我很可能做這樣的事情將是一個XML API,其中一個屬性會顯示「取給定名稱的第一個元素」:

XElement author = doc.Root.Posts.Author; 

這是相當整潔 - 對於你想要的具體情況。只是不要嘗試應用它太普遍...

+0

您的XML示例看起來幾乎像Javascript的E4X擴展。 http://en.wikipedia.org/wiki/E4X – akuhn 2008-12-01 13:03:58

1

這樣的語法對你有什​​麼好處?

如果您修復了名稱,爲什麼不用屬性創建類?

1

REXX有莖的概念,在那裏你可以說x.1,x.2 x.bob這些指的是數組元素x [1],x [2]和x ['bob']。

此外LotusScript(在Notes中)允許您以這種方式處理Notes數據庫,其中db.get(「fieldname」)與db.fieldname相同。

我已經使用了REXX(有沒有其他選擇),但是當我爲Notes數據庫編碼時,我更喜歡get/put的方式。

1

Lua tables具有a.x作爲[「x」]的語法糖。 Lua表是可以用來表示數組,哈希和其他語言記錄的關聯數組。通過說明意圖(Record?Array?Hashtable?),糖有助於使代碼更具可讀性,但它對語言沒有任何影響。

0

也許你正在尋找一個類或結構,如果你想使用元素名稱作爲一個字段/屬性。

7

JavaScript的確如你所描述的那樣。在JavaScript中,每個對象只是屬性名稱到值的映射。括號運算符只是通過名稱返回一個屬性(或者在整數索引的情況下通過值來返回)。你可以通過使用點來引用命名的屬性,儘管你不能用整數標記來完成。 This page詳細描述了括號運算符和點符號。

相關問題