我有一個字符串數組,stringarr
,並且想知道最長字符串的長度。我對字符串本身不感興趣。Ruby:獲取最長字符串的長度
我的第一個解決方案是
maxlen = stringarr.max_by(&:size).size
作品,但醜:我不得不提一下大小的兩倍,這是容易出錯,並且需要caluclated兩次最長的字符串的大小。那麼,沒有什麼大不了的字符串,但看到下面。
另一個想法是,從可讀性的角度來看
maxlen = stringarr.map(&:size).max
清潔,但需要創建一個臨時數組。也不好。
這裏的另一種嘗試:
maxlen = stringarr.inject(0) {|memo,s| [memo.size,s.size].max}
不完全是美麗要麼....
我不知道是否有更好的方法。我的願望是類似於
maxlen = stringarr.max_of(&:size) # Sadly no max_of in Ruby core
當我有一個更復雜的代碼塊時,這將是特別有趣的。這當然不是很好的風格:
maxlen = measurement(stringarr.max_by {|s| measurement(s)})
有什麼建議嗎?
你在這裏問我們什麼?你在尋找最高效的方式來做到這一點?你的意見在你的問題上是_opinions_什麼_looks_更好... – Anthony
你需要字符串之後?如果沒有,你可以使用'map!',它不會創建一個「臨時數組」,它將修改現有數組。 – engineersmnky
@Anthony:對於可維護且至少沒有徹底低效的解決方案,我沒有多少意見*。可維護性意味着沒有代碼重複比代碼複製更好,所以我第一次嘗試(我不得不兩次寫'size')並不是那麼好,而且低效率意味着例如對於大型數組,操作會變得很昂貴構造一個臨時數組;這就是爲什麼我的第二次嘗試不太好。所以,我不太看個人意見,但是對於可以客觀討論的結果。 – user1934428