2012-05-21 58 views
5

如何在J編程語言中進行數組訪問?例如,使用C++作爲我的僞代碼語言:J編程語言中的數組

int M [100]; // declare an array called M 
int j = 5; //index into the array 
int y = 10; //value to store or load from the array 

M[j] = y; // store y into the array 

y = M[j]; // load y from the array 

這些類型的數組訪問看起來像在慣用的J中看起來像什麼?

+1

[RosettaCode](http://rosettacode.org/wiki/Arrays#J)可能是這種類型的比較更好的論壇。 – Tikkanz

回答

7

在J中編寫這個字面(但仍然非常習慣)的方式如下。

m =: 100 $ 0 NB. This means create a 1d array consisting of 100 zeros. 
j =: 5 
y =: 10 

隨着在初始化出的方式,現在我們已經準備好了答案,它由the } adverb ("Item Amend" and "Amend")兩種不同用途的肉。

m =: y j } m 

把兩個參數到}左側導致J可具有值y更換右手參數mj個元素。注意:我們必須將結果重新分配到m,因爲y j } m的結果僅僅是計算一個新數組,其中包含您使用動詞}請求的更改。

y =: j } m 

把只有一個參數到}左側導致J確定摘錄的mj th元素並返回它。在這種情況下,我們將y設置爲結果。

+0

請注意,上述修改將「就地」執行。 J認識到新陣列被分配到相同的名稱,並只將更改寫入新陣列。請參閱http://jsoftware.com/jwiki/Essays/In-Place%20Operations。在我的經驗中,二元動詞From http://jsoftware.com/help/dictionary/d520.htm'{'更常用於從數組中檢索項目。 – Tikkanz

+0

非常好的一點,@Tikkanz。並感謝您在編輯中的更正。 OMG! – sblom

+0

我不知道修改'}'有單獨的左參數功能!我只是經常使用'{'... – MPelletier