0 haskell
我有以下方法:
mainFunction arg1 = "http://someBaseUrl.com/" ++ arg1
url1 x = mainFunction x ++ "/subUrl1"
url2 x = mainFunction x ++ "/subUrl2"
url3 x = mainFunction x ++ "/subUrl3"
url4 x = mainFunction x ++ "/subUrl4"
Run Code Online (Sandbox Code Playgroud)
我的直觉告诉我它必须简化.但我无法弄清楚如何.
但是,我不能这样做,因为它不一样:
url1 = (mainFunction .) ++ "/subUrl1"
Run Code Online (Sandbox Code Playgroud)
你的建议?
你可以做
url s x = mainFunction x ++ s
url1 = url "/subUrl1"
url2 = url "/subUrl2"
Run Code Online (Sandbox Code Playgroud)
等......
如果你真的要编写尽可能少的代码并避免调用url树时,你可以使用这个技巧(但是,我不确定是否推荐)
[url1, url2, url3, url4] = map url ["/subUrl1", "/subUrl2", "subUrl3", "subUrl4"]
Run Code Online (Sandbox Code Playgroud)
这将宣布四项功能url1,... url4.