Functional programming 将Time.now转换为Date-Elm
你好,我是Elm的新手,在获取当前时间并将其转换为Elm中的日期时遇到了一些困难 我有一个消息类型-message和一个向模型添加新消息的函数。我正在尝试存储消息发布的时间以及文本和用户id 然而,我不断得到这个错误-Functional programming 将Time.now转换为Date-Elm,functional-programming,elm,Functional Programming,Elm,你好,我是Elm的新手,在获取当前时间并将其转换为Elm中的日期时遇到了一些困难 我有一个消息类型-message和一个向模型添加新消息的函数。我正在尝试存储消息发布的时间以及文本和用户id 然而,我不断得到这个错误- The argument to function `fromTime` is causing a mismatch. 59| Date.fromTime (currentTime Time.now)
The argument to function `fromTime` is causing a mismatch.
59| Date.fromTime (currentTime Time.now)
^^^^^^^^^^^^^^^^^^^^
Function `fromTime` is expecting the argument to be:
Time
But it is:
x -> Time -> Time
Hint: It looks like a function needs 2 more arguments.
这是密码
type alias Message =
{ text : String,
date : Date,
userId : Int
}
currentTime : task -> x -> Time -> Time
currentTime _ _ time =
time
newMessage : String -> Int -> Message
newMessage message id =
{ text = message
, date = Date.fromTime (currentTime Time.now)
, userId = id
}
我真的搞不懂发生了什么事。任何帮助都将不胜感激。谢谢。Elm是一种纯语言,函数调用是确定性的。请求当前时间稍微复杂一点,因为我们无法调用任何函数根据一天中的时间返回不同的时间。具有相同输入的函数调用将始终返回相同的内容 获得当前时间取决于副作用。我们必须要求架构以一种纯粹的方式给我们时间。Elm处理这一问题的方法是通过
任务
和程序
功能。通过update
函数中的Cmd
向Elm架构发送任务。然后,Elm体系结构在幕后做自己的事情来获取当前时间,然后用纯代码响应,再次调用update
函数
下面是一个简单的示例,您可以粘贴到,单击按钮查看转换为日期的当前时间
导入Html公开(…)
导入Html.Events(onClick)
导入时间曝光(…)
进口日期
导入任务
主要=
Html.program
{init={message=“单击按钮查看时间”}![]
,视图=视图
,update=update
,订阅=\ \->Sub.none
}
类型别名模型={message:String}
视图模型=
分区[]
[按钮[单击获取时间][文本“获取当前时间”]
,div[][text model.message]
]
输入味精
=获取时间
|现在是时候了
更新msg模型=
味精案例
获取时间->
模型[Task.perform Now Time.Now]
现在t->
{model| message=“日期现在是”++(toString(date.fromTime t))}![]
如果您熟悉javascript,Now
消息的用途大致可以看作是一个回调函数,它提供的参数是Elm体系结构发送的时间