我试图弄清楚如何创建一个带有字符串列表的函数,并返回一个只包含列表中最长字符串的新列表。
我很难搞清楚这个问题的几个方面,包括如何跟踪最大值并在有一个新的最长字符串时更改它。我需要使用效果/任务吗?
示例:一个函数需要["一个","两个","三个"]并返回["三个"]它是最长的字符串。
答案 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 ""