集合的定義通常會用角括號包住一個預留位置,依慣例通常是T。這樣的集合就叫做泛型。如此一來,集合的使用者就能指定要在集合裡存放哪種型別的項目。在下面的範例程式碼中,我們正在具現化一個字串陣列。
C# 裡的陣列是由基本型別的值,或是結構和類別的執行個體所構成的集合。它們在基底類別庫中是以List<T>實作的,其中T是陣列中項目的型別。API 提供了一組豐富的方法,可以用來建立和操作陣列。
項目可以加入陣列,也可以從陣列中移除。它們會視需要成長和縮減。
var listOfStrings = new List<string>();
在這個練習中,你會撰寫程式碼,用來追蹤你想在 Exercism 上學習的程式語言陣列。
這個練習有九個任務,每個任務都會用到陣列。
為了追蹤你想學的語言,你需要建立一個新的陣列。
請實作 static 方法 Languages.NewList(),讓它回傳一個新的空陣列。
Languages.NewList()
// => empty list
目前,你有一張紙,上面列出你想學的語言:C#、Clojure 和 Elm。
請實作 static 方法 Languages.GetExistingLanguages(),回傳這個陣列。
Languages.GetExistingLanguages();
// => {"C#", "Clojure", "Elm"}
當你在 Exercism 上探索、發現更多有趣的語言時,你會想把它們加進你的陣列。
請實作 static 函式 Languages.AddLanguage(),把新語言加到陣列的最後。
Languages.AddLanguage(Languages.GetExistingLanguages(), "VBA");
// => {"C#", "Clojure", "Elm", "VBA"}
一個一個數這些語言很不方便。
請實作 static 方法 Languages.CountLanguages(),計算陣列中語言的數量。
Languages.CountLanguages(Languages.GetExistingLanguages())
// => 3
請實作 static 方法 Languages.HasLanguage(),檢查某個語言是否存在。
Languages.HasLanguage(Languages.GetExistingLanguages(), "Elm")
// => true
某個時刻,你發現你的陣列其實是反過來排序的!
請實作 static 方法 Languages.ReverseList(),把你的陣列反轉過來。
Languages.ReverseList(Languages.GetExistingLanguages())
// => {"Elm", "Clojure", "C#"}
雖然你喜歡所有語言,但 C# 在你心中有個特別的位置。因此,只要符合下列其中一個條件,你就會對一份語言陣列感到非常興奮:
請實作 static 方法 Languages.IsExciting(),檢查語言陣列是否令人興奮:
Languages.IsExciting(Languages.GetExistingLanguages())
// => true
請實作 static 方法 Languages.RemoveLanguage(),從陣列中移除指定的語言。
Languages.RemoveLanguage(Languages.GetExistingLanguages(), "Clojure")
// => { "C#", "Elm" }
請實作 static 方法 Languages.IsUnique(),檢查陣列中是否有任何語言重複。
呼叫這個方法時,語言陣列(也就是參數)保證不會是空的,而且陣列有沒有被修改都無所謂。
Languages.IsUnique(Languages.GetExistingLanguages())
// => true