在上一篇文章Scratch中間接實現多維數組支持(一)中,咱們介紹了使用Scratch列表表達二維數組的一種方法,注意到此種方法有兩個問題:
(1)僅能表達二維數組算法
(2)數組中的元素長度僅能爲1編程
在本文中,咱們將介紹一種更爲通用的使用列表表達二維(甚至是多維)數組的一種方法。但願朋友們可以真正掌握這種方法以便在複雜程序開發中補充Scratch列表的不足。數組
在本文介紹的方法2中,列表中的每一個項都是數組中的一個項。這樣就可以容許數組項包含多個字符,並且有可能使得數組支持多個維度。ide
先看形式表達上的簡單舉例,最後來概括概念與有關算法。工具
上面是最直觀不過的一個二維數組表示形式。同時,這個數組共有2行,每一行共有4個元素,分別存儲人物的編號、姓名、性別與年齡4種信息。下面,咱們經過兩種典型操做——檢索(搜索)與修改(編輯)來對比上一種方法。另外,上圖中幾個私有變量都是在操做數組過程當中起輔助做用的。blog
[小結]在本文介紹的第二種表示方法中,列表中每一項的前兩個字符是固定不變的,含義也十分明確——分別表示二維數組的行數(例如N)和行號與數組實際數據的間隔字符(本例中使用冒號「:」這個間隔符通常是一個固定字符便可,未必是冒號)。間隔符後面是元素內容。例如,本例中第2行第5列(即上面列表中第5個元素)全體內容爲「2:0102」,實質對應的二維數組元素爲人物的編號「0102」.開發
數組編輯操做字符串
這段代碼中,變量三個變量都是起輔助做用的,意思不言自明,分別表示要操做的數組陣列的行(row)、列(col)與數組中總列數(Columns)。it
整體來看,使用Scratch列表的「replace...」積木便可完成修改指定位置的二維數組元素值的目的。class
上面代碼執行後,數組內容變成以下圖所示:
修改後數組中第2行第2列新內容
相對於上文中提到的方法,本文方法中二維數組檢索元素麻煩一些。
針對上面修改後的內容對應的元素,可使用以下代碼把這個元素搜索並顯示出來:
搜索數組元素代碼
執行后角色將會說出對應的數組元素的新內容爲「劉備名字」。
接下來,整理一下上面的檢索代碼,把它作成一個自定義積木形式(前面的修改操做至關簡單,有興趣的讀者能夠自行製做一下):
自定義積木檢索數組元素代碼及調用示例
上面調用示例是搜索數組中第2行第3列所在位置元素值,並顯示出來,結果對應於性別值「男」。
本文介紹的方法具備普適性,能夠進一步擴大思路,使用多個間隔符方法來使用列表實現3維甚至是多維數組!有興趣讀者能夠嘗試一下。
之前的文章中我曾經屢次提到,Scratch這個工具實現的是編程中最最基本的功能支持,稍微擴展性的功能可能須要開發者本身來經過自定義積木實現。經過本文中的字符串操做你們已經看出這一點,它連常見的其餘高級語言中的子字符串操做運算都沒有提供直接支持,也正是因爲這一點,實現起本文及前文中的編程相對麻煩一些。