2016-11-30 64 views
0

例如這個碼返回字母表中找到的第一個串的Scala方法/字典

val stringTuple = ("BLACK", "GRAY", "WHITE") 
firstInAlphabet(stringTuple) 

應返回"BLACK"。你如何定義firstInAlphabet

就我個人而言,我更喜歡簡單而快速的實現,而不是複雜的實現,它將覆蓋很多情況。

+0

在大多數情況下,治療你的元組爲含有序列反而是一個設計的氣味 –

+0

如果你在標題中註明,只需撥打'tuple._1' –

回答

2
t.productIterator.map(_.asInstanceOf[String]).min 

productIterator將元組的元素轉換爲迭代器。這會丟失類型信息,所以我們必須投射元素,然後使用min找到第一個。

如果你在你的元組具有非字符串元素的這個版本應該做的伎倆:

t.productIterator.map(_.toString).min 

,而不是轉換爲String將其轉換爲一個字符串。

+0

如果你的元組包含非,這將使你的元組已經訂購字符串元素。否則非常好,簡潔。 – jwvh

+0

@jwvh正確,添加了一個使用字符串轉換的版本。 –

相關問題