2012-05-21 7 views
5

Làm thế nào để một mảng truy cập bằng ngôn ngữ lập trình J? Ví dụ: sử dụng C++ làm ngôn ngữ giả của tôi:Mảng trong ngôn ngữ lập trình 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 

Các loại truy cập mảng này sẽ trông như thế nào trong thành ngữ J?

+1

[RosettaCode] (http://rosettacode.org/wiki/Arrays#J) có thể là diễn đàn tốt hơn cho loại so sánh này. – Tikkanz

Trả lời

7

Cách viết (nhưng vẫn khá thành ngữ) để viết điều này trong J sẽ như sau.

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

Với việc khởi tạo đó, chúng tôi đã sẵn sàng cho câu trả lời, bao gồm hai cách sử dụng khác nhau là the } adverb ("Item Amend" and "Amend").

m =: y j } m 

Đưa hai đối số ở phía bên trái của } gây J để thay thế các nguyên tố thứ j của đối số tay phải m với giá trị y. LƯU Ý: chúng tôi phải gán kết quả trở lại vào m vì kết quả của y j } m chỉ đơn giản là tính toán một mảng mới kết hợp thay đổi mà bạn đã yêu cầu bằng cách sử dụng động từ }.

y =: j } m 

Đưa chỉ một đối số ở phía bên trái của } gây J để trừ các nguyên tố thứ j của m và gửi lại. Trong trường hợp này, chúng tôi đặt y thành kết quả.

+0

Lưu ý rằng sửa đổi ở trên sẽ được thực hiện "tại chỗ". J nhận ra rằng mảng mới đang được gán cho cùng một tên và chỉ ghi các thay đổi vào mảng mới. Xem http://jsoftware.com/jwiki/Essays/In-Place%20Operations. Theo kinh nghiệm của tôi, động từ dyadic Từ http://jsoftware.com/help/dictionary/d520.htm '{' thường được sử dụng để lấy các mục từ một mảng. – Tikkanz

+0

Điểm rất tốt, @Tikkanz. Và cảm ơn các chỉnh sửa trong bản chỉnh sửa của bạn. – sblom

+0

OMG! Tôi không có ý tưởng sửa đổi '}' có tính năng đối số bên trái duy nhất! Tôi chỉ sử dụng việc thực hiện thường xuyên việc sửa đổi '{' ... – MPelletier