我試過let stringArr = newvec(12);
,然後嘗試初始化數組中的每個點,如下所示:let stringArr!i = newvec(5);
但是,返回一個錯誤,告訴我我不能這樣做。有沒有人可以幫助我用這種恐龍語言?如何初始化BCPL中的數組數組?
3
A
回答
2
你伸展我的記憶一點(約三十年的程度),但我似乎記得,let
只用於創建新局部變量(也函數和其他可能的事情,但是這不是真的與你的問題相關)。
所以聲明:
let stringArr = newvec(12)
是創造有效的新的變量stringArr
,或者更確切地說,一個12芯匿名載體和stringArr
變量保存的是矢量的地址。
但是:
let stringArr!i = newvec(5)
是不有效的,因爲stringArr!i
實際上並不在其本身的新變量。它只是在已存在的stringArr
向量中的單元號i
的存儲內容。
換句話說,該語句let stringArr = newvec(12)
同時創建初始指針細胞和指針的第二層,該層將不指向任何地方有用尚未:
+-----------+
| stringArr | ---+
+-----------+ | +-------------+
+--> | stringArr!0 | --> ?
+-------------+
| stringArr!1 | --> ?
+-------------+
: : :
+-------------+
| stringArr!N | --> ?
+-------------+
而且,由於指針已經存在,你不應該使用let
來設置它們。
它在,在C相似,你會不會寫:
int xyzzy[10]; // Make array of ten elements.
int xyzzy[0] = 42; // Set first element to something.
因爲第二行是不應該被定義新變量,而它的目的很簡單,就是設置的一個現有元素給定值,以做到:
xyzzy[0] = 42;
因此,正確的方式做你想達到什麼我ÑBCPL是避免使用let
關鍵字對於第二類的語句:)
let stringArr = newvec(12) // Create new vector AND new variable,
// put vector address into cell for
// that variable.
stringArr!i = newvec(5) // Create new vector, put vector
// address into EXISTING cell.
0
該解決方案是合理的,但我的兩個BCPL(馬丁·理查德和Robert Nordier獨立的obcpl)版本的抱怨newvec(並且還需要:=而不是=在第二行。我得到了它的工作:
let stringArr = getvec(12)
stringArr!i := getvec(12)
約翰Boutland
+0
感謝您的編輯,wogsland。我不知道(但仍然不知道)如何獲得這種格式的代碼。約翰 –
相關問題
- 1. 如何初始化數組
- 2. 如何初始化nasm中的數組?
- 3. 如何初始化c中的數組?
- 4. 如何初始化Tcl中的數組?
- 5. 數組初始化
- 6. 數組初始化
- 7. 初始化數組
- 8. 數組初始化
- 9. C - 如何初始化一個預初始化的二維數組數組?
- 10. 初始化數組時初始化System.AccessViolationException
- 11. 如何在swift中初始化數組
- 12. 如何在Kotlin中初始化數組?
- 13. 如何初始化整數數組C#
- 14. 初始化數組的數組
- 15. 如何在swift中初始化一個空數組的數組?
- 16. 如何初始化數組數組中的所有位置?
- 17. 如何初始化數組中的數組?
- 18. 如何初始化數組的對象?
- 19. 如何初始化類的數組?
- 20. 如何初始化數組的
- 21. 初始化數組的值
- 22. 數組初始化的「新」
- 23. 的CoffeeScript - 數組初始化
- 24. 初始化一個數組數組
- 25. 如何在結構中初始化這個數組數組?
- 26. 用數組或初始化初始化一個NSMutableArray初始化
- 27. 如何初始化ObservableCollection數組?
- 28. 類和數組如何初始化?
- 29. Angular2如何初始化數組對象
- 30. 如何重新初始化數組?
哇,哪裏是BCPL仍在使用? – Barmar
@Barmar Twitter。開個玩笑,一個特定的大學課程。 – countofmontecristo
我在BCPL參考手冊中的任何地方都看不到'!'字符http://cm.bell-labs.com/cm/cs/who/dmr/bcpl.pdf – Barmar