试图找出如何获取当前时间,我找到了方法,但不知道如何阅读类型签名。
签名为now : Task x Time
,您可以看到here。
无法弄清楚如何搜索它,因为他们在任何地方使用x
作为变量名称,我通常可以在解析器代码中找到合适的位置,但是跟随它会有很多困难。
答案 0 :(得分:5)
x
类型是所谓的type parameter
。这意味着该类型尚未定义。
在您的特定情况下,类型Task
的定义,Task
之后的第一个类型表示异步操作可能失败的类型。
在定义函数时,此类型尚未完全定义。在程序中,您可以自由地使用所需类型的错误类型
答案 1 :(得分:3)
定义:
now : Task x Time
表示(松散翻译):
Time.now是一个任务,在执行时会给你:
- 类型
x
的输出,如果失败,- 如果成功,则输出
Time
类型。
由于任务Time.now
永远不会失败,因此错误类型无关紧要。
在Elm中,小写类型(a
,b
,x
,comparable
,msg
)表示类型可以是任何类型,即函数可以使用不同种类。
msg
了解邮件类型。comparable
表示它必须是您可以比较的类型
两个值(例如,如果函数对值进行比较)
该类型,以确定哪一个更大等。)这对输入类型有意义。但输出却不那么重要。我想在这种情况下,x
或多或少“不适用”。 Task
类型需要错误输出类型。但在这种情况下,它是无关紧要的。
附录:要实际获得当前时间,您需要再采取两个步骤:
执行任务,返回Cmd
:
timeCmd = Task.perform identity MyMsg Time.now
这将执行时间任务,并将结果时间包装在Cmd MyMsg
处理Cmd
输出:为此,您需要在MyMsg
函数中包含update
处理程序。