主要是涉及对象解构的es6 / 7问题。
假设我有这个示例函数:
getNext : List a -> a -> Maybe a
getNext list element =
list
|> List.drop 1
|> zip list
|> List.filter (\(current, next) -> current == element)
|> List.map (\(current, next) -> next)
|> List.head
zip : List a -> List b -> List (a,b)
zip = List.map2 (,)
它是一种说法,"第一个参数是预期的,如果第二个参数被定义,也将它添加到对象中#34;。
是否有更优雅的方法来实现相同的效果,但是使用对象解构?
答案 0 :(得分:3)
您也可以将您的功能编写为
const sample = (one, two) => two? {one, two}: {one};
它的一种说法,“第一个参数是预期的,如果第二个参数被定义,也将它添加到对象中”
与代码一样,请注意添加的值作为第二个参数。
有更多的虚假值而不仅仅是undefined
,其中一些你可能想要分配给结果。如果标准是否定义了第二个参数,我将明确检查undefined
:
const sample = (one, two) => two !== undefined? {one, two}: {one};