Elm 理解这个信号代码
我从昨天开始就在读这段代码,试图给出一个合理的解释,你能检查一下我的假设是否正确吗 此代码来自 第1行定义了一个端口,它返回一个Elm 理解这个信号代码,elm,elm-signal,Elm,Elm Signal,我从昨天开始就在读这段代码,试图给出一个合理的解释,你能检查一下我的假设是否正确吗 此代码来自 第1行定义了一个端口,它返回一个信号,该信号由一个任务、一个由x标识的类型和一个空值组成(这对我来说没有意义,我想这是完全错误的) 第4行和第5行使用了forward函数应用程序构造,因此第4行的结果作为参数传递给第5行,但是在这些行中详细发生了什么 为了学习函数式反应式编程,我正在学习它是一个很好的资源吗 我已经阅读了有关信号的文档,但我不能真正理解这一点。如果您能用简单的英语解释并举例说明,我将不
信号
,该信号由一个任务
、一个由x
标识的类型和一个空值组成(这对我来说没有意义,我想这是完全错误的)
第4行和第5行使用了forward函数应用程序构造,因此第4行的结果作为参数传递给第5行,但是在这些行中详细发生了什么
为了学习函数式反应式编程,我正在学习它是一个很好的资源吗
我已经阅读了有关信号的文档,但我不能真正理解这一点。如果您能用简单的英语解释并举例说明,我将不胜感激,非常感谢任何愿意帮助我的人 A
port
是Elm与JS世界通信的方式
Signal(Task x())
表示任务的信号具有错误类型x
,并返回
第二行定义了端口,它基本上意味着该端口将用于与JS通信,而不是与JS通信
如果我们看一下lookupZipCode
的定义,我们可以看到它使用字符串
,并返回任务字符串(列表字符串)
。查看它的代码,我可以看到它将对查询字符串执行Http请求,并返回字符串类型的错误或字符串列表(城镇名称列表)
因此,Signal.map lookupZipCode query.Signal
生成这些任务的信号,这些任务将询问zipcode服务器
在下一个Signal.map中,我们执行上述任务并将其转换为:
然后
此结果类型将发送到结果地址
李>
在JS land中实际发送执行的结果任务将没有错误(这就是为什么您在那里看到x),并将生成单元类型(这是Signal.send的签名)
当任务在JS中实际执行时,执行的结果将以results.address作为结果类型结束 A
port
是Elm与JS世界通信的方式
Signal(Task x())
表示任务的信号具有错误类型x
,并返回
第二行定义了端口,它基本上意味着该端口将用于与JS通信,而不是与JS通信
如果我们看一下lookupZipCode
的定义,我们可以看到它使用字符串
,并返回任务字符串(列表字符串)
。查看它的代码,我可以看到它将对查询字符串执行Http请求,并返回字符串类型的错误或字符串列表(城镇名称列表)
因此,Signal.map lookupZipCode query.Signal
生成这些任务的信号,这些任务将询问zipcode服务器
在下一个Signal.map中,我们执行上述任务并将其转换为:
然后
此结果类型将发送到结果地址
李>
在JS land中实际发送执行的结果任务将没有错误(这就是为什么您在那里看到x),并将生成单元类型(这是Signal.send的签名)
当任务在JS中实际执行时,执行的结果将以results.address作为结果类型结束 比你还多!比你还多!
port requests : Signal (Task x ())
port requests =
Signal.map lookupZipCode query.signal
|> Signal.map (\task -> Task.toResult task `andThen` Signal.send results.address)