我已经浏览了每个Http函数(参数和返回值)的文档,对函数currying知之甚少,我无法理解Http.send
函数中编写的getRandomGif : String -> Cmd Msg
函数调用顺序
需要帮助理解/扩展Http.send
,调用函数的顺序。 http://elm-lang.org/examples/http
-- send : (Result Error a -> msg) -> Request a -> Cmd msg
-- NewGif (Result Http.Error String)
-- get : String -> Decoder a -> Request a
Http.send NewGif (Http.get url decodeGifUrl)
答案 0 :(得分:2)
from tkinter import *
import os
class TechnologyIDE:
def __init__(self, master):
#Vytvoření master
self.master = master
master.title('Technology IDE')
#Frame
frame = Frame(root)
frame.pack()
self.frameLEFT = Frame(master)
self.frameLEFT.pack(side=LEFT, fill=Y)
self.frameRIGHT = Frame(master)
self.frameRIGHT.pack(side=RIGHT, expand=True, fill=BOTH)
#Boxy
self.showCodewitHLines()
self.showProjectToolbar()
self.showNavigator()
def showProjectToolbar(self):
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
width = int(screen_width/30)
listbox = Listbox(self.frameLEFT)
listbox.pack(side=TOP, anchor=W)
listbox.insert(END, "PROJECTS")
listbox.insert(END, " SOURCE")
def showCodewitHLines(self):
e = Text(self.frameRIGHT)
e.pack(fill=BOTH)
def showNavigator(self):
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
width = int(screen_width/30)
listbox = Listbox(self.frameLEFT)
listbox.pack(side=TOP, anchor=W)
listbox.insert(END, "NAVIGATOR")
root = Tk()
ide = TechnologyIDE(root)
root.mainloop()
在内部调用Task
以下是其他频道的响应(Slack& Youtube)
https://www.youtube.com/watch?v=EDp6UmaA9CM
Elm的任务系统最终会调用构造函数LoadUser。
Http.send创建了一个我们交给Elm架构的Cmd,因此它可以代表我们执行HTTP请求。我们提供给Http.send的函数告诉Elm我们想要在它返回时如何处理结果。
您可以在此处查看Cmd的创建位置:https://github.com/jfairbank/arch-elm/blob/master/app/src/Profile.elm#L120-L121。
因为我们为Http.send提供了一个Msg值LoadUser作为我们的函数,所以一旦我们得到结果,它允许我们稍后在更新函数中响应LoadUser。
这是Elm生成任务的地方:https://github.com/elm-lang/http/blob/master/src/Http.elm#L85-L87。在这种情况下,resultToMessage参数将是LoadUser。
使用函数组合运算符可能很难理解,但是这里最终会在任务模块中调用resultToMessage或LoadUser:https://github.com/elm-lang/core/blob/5.1.1/src/Task.elm#L237-L243。
https://spin.atomicobject.com/2016/10/11/elm-chain-http-requests/