Ruby 好用的 Set 與應用
喜歡作者的文章嗎?馬上按「關注」,當作者發佈新文章時,思書™就會 email 通知您。
思書是公開的寫作平台,創新的多筆名寫作方式,能用不同的筆名探索不同的寫作內容,無限寫作創意,如果您喜歡寫作分享,一定要來試試! 《 加入思書》
思書™是自由寫作平台,本文為作者之個人意見。
給本文個喜歡
或不
關於作者
很久以前就是個「寫程式的」,其實,什麼程式都不熟⋯⋯
就,這會一點點,那會一點點⋯⋯
看看作者的其他文章
看看思書的其他文章
Ruby 中被遺忘的珍珠:Set(集合)
很多人可能都忘了 Ruby 中有內建很好用的「Set(集合)」程式庫,忘記它的理由可能只是它因為是在標準程式庫中,使用時必須要 require 進來,可是在 Rails 中,直接用就可以了。
Ruby 的 Set(集合)非常好用,特別是與 Array 有幾乎相同的運算方式,Set(集合)是使用 Hash 來儲存,所以很多 hash 的運用也通用,Set(集合)與 Array 有以下兩個最重要最大的不同:
在很多情況下,適當的使用 Set(集合)與 Array (陣列)可以大幅的減少開發的難度,兩者的混用,更是一個強強結合。
我們先來看一下 Set(集合)的基本運算,對應到離散數學上的集合運算:
這只是列出了一小部分,更多就請看一下文件了。
應用:
實務上,我們有很多地方可以用到,特別是如果結合 Array 跟 Set,例如:我們要一個沒有重複的 elements 元素的 Array,要移除相同的元素,可能不是那麼簡單,現在,我們只要用 set,輕輕鬆鬆就可以辦到!如下:
Array 移除相同的元素
用 Set 跟 Array 來玩字串,也很有趣,有想過如何找出一段文字中,所有不同的單字嗎?轉一轉就好了!
一段文字中,找出所有不同的單字
是不是很簡單又有趣!我很喜歡 Set(集合),我以前幾乎都忘了它的存在,它的沒有重複元素的特性,在很多運用上,可以簡化很多開發難度。
有要注意的點嗎?
當然使用上還是有要注意的,我目前想到最大的問題就是,因爲 Set(集合)沒有固定排列順序,這是跟 Array 最大的不同點,所以使用上要稍微小心一點,很容易跟 Set 跟 Array 混淆,不過,如果有學過離散數學,這問題就不大了。 我前幾天還在跟人聊天,說上課時學了一學期的離散數學,好像都沒用到過,沒想到,馬上就用到了,真是墨菲定律啊。
備註,及一些好用的參考: