使用Elm将列表减少到列表中最长的字符串

时间:2016-03-20 23:22:45

标签: elm

我试图弄清楚如何创建一个带有字符串列表的函数,并返回一个只包含列表中最长字符串的新列表。

我很难搞清楚这个问题的几个方面,包括如何跟踪最大值并在有一个新的最长字符串时更改它。我需要使用效果/任务吗?

示例:一个函数需要["一个","两个","三个"]并返回["三个"]它是最长的字符串。

3 个答案:

答案 0 :(得分:5)

如果您只想要一个能够为您提供列表中最长字符串的函数:

List.sortBy String.length >> List.reverse >> List.take 1

答案 1 :(得分:2)

您可以折叠列表,跟踪沿途最长的字符串:

import String exposing (length)

findLongest = List.foldr (\x y -> if length x > length y then x else y) ""

这比List.sortBy具有性能优势,因为foldr只需对列表进行一次滑动,而排序必须对所有项目进行排序。

答案 2 :(得分:0)

好消息:你不需要使用效果或任务。

最长的字符串函数可以定义如下:

*.tmp

然后你就可以使用它:

sed -i

如果您希望将结果作为包含一个元素的列表,那也是可能的。

import String exposing (length)

longerString : String -> String -> String
longerString s1 s2 = if length s2 > length s1 then s2 else s1

longestString : List String -> String
longestString = List.foldr longerString ""