Ste*_*n B 2 functional-programming elm
我有这样简单的url builder:
prepareUrl : Params -> String
prepareUrl params =
Url.crossOrigin "http://someapi.com/"
["posts"]
[
, Url.string "currency" params.currency
, Url.string "members[0][birthday]" "12.12.1989"
]
Run Code Online (Sandbox Code Playgroud)
当我收到像memberCount 2或3之类的param时,我需要在请求中"克隆"成员[],如下所示:
params.membersCount = 3
prepareUrl : Params -> String
prepareUrl params =
Url.crossOrigin "http://someapi.com/"
["posts"]
[
, Url.string "currency" params.currency
, Url.string "members[0][birthday]" "12.12.1989"
, Url.string "members[1][birthday]" "12.12.1989"
, Url.string "members[2][birthday]" "12.12.1989"
]
Run Code Online (Sandbox Code Playgroud)
日期字符串本身可以保持不变,也没关系.我怎样才能做到这一点?
由于第三个参数Url.Builder.crossOrigin需要的列表QueryParameter值,你可以建立一个列表0来memberCount使用List.range:
prepareUrl : Params -> String
prepareUrl params =
Url.crossOrigin "http://someapi.com/"
["posts"]
(Url.string "currency" params.currency :: birthdayParams params.memberCount)
birthdayParams : Int -> List Url.QueryParameter
birthdayParams memberCount =
List.range 0 (memberCount - 1)
|> List.map (\i -> Url.string ("members[" ++ String.fromInt i ++ "][birthday]") "12.12.1989")
Run Code Online (Sandbox Code Playgroud)