gpt4 book ai didi

date - 榆树 当前日期

转载 作者:行者123 更新时间:2023-12-03 23:45:24 27 4
gpt4 key购买 nike

在 elm 中,我有一个模型,其中包含 currentDate ,它是一个表示日期的字符串。我用信号更新它:

Signal.map (SetCurrentDate << timeToDateString) (Time.every Time.second)

SetCurrentDate是更新模型的操作 ( SetCurrentDate date -> { model | currentDate <- date} ),并且 timeToDateString将时间转换为“yyyy-mm-dd”等字符串。

但是,这有两个问题:

  • model.currentDate仅在一秒后才正确设置。因此,在应用程序启动时有一秒钟,currentDate 未正确设置。
  • model.currentDate每秒设置一次,尽管它每天都在变化。

有办法解决这个问题吗?那么 currentDate 是在应用程序启动时设置的(没有一秒的延迟),并且每天只更新一次?

额外发现:

如果我将信号更改为Signal.dropRepeats <| Signal.map (SetCurrentDate << timeToDateString) (Time.every Time.second) (所以我删除了重复),该信号仅在日期改变时触发,并且在应用程序启动时也不会触发一次。

编辑:如果有更好的方法来了解 Elm 应用程序中的 currentDate,我很想听听。我的谷歌搜索没有给出任何结果。

谢谢!

最佳答案

使用信号

您使用的是 StartApp 还是有自己的 foldp?如果您使用 StartApp,最好查找 start 函数的代码并将其内联,以便您可以访问 foldp

Signal.foldp 不会对信号的初始值执行任何操作。因此,如果您使用 Time.every Second 信号,则只能在一秒后获得更新;如果使用日期转换和 Signal.dropRepeats,则只能在一天后获得更新。您可以使用Signal.Extra.foldp'来自第 3 方 signal-extra库* 来解决这个问题。它需要一个函数根据输入的初始值创建 foldp 的初始状态。

*完全披露:我是该库的作者

使用任务

task-tutorial中有一个非常有用的任务名为 getCurrentTime 的库。我认为这可以满足您的需求,而不需要每秒更新的信号。连同Task.sleep ,您可能会得到每天只检查一次或两次时间的东西。

关于date - 榆树 当前日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34089751/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com