我有一个字符串数组,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