Scala流逐渐摆脱VAR

发布于 2025-02-01 00:04:07 字数 431 浏览 3 评论 0原文

我正在尝试通过从当前日期开始一个月来生成无限的日期列表,我想使用流进行此操作。

这是我到目前为止所做的:

import org.joda.time.LocalDate

var date = new LocalDate("2022-05-24")
val dateSeq = Seq(date)
val allDates = dateSeq.toStream ++ Stream.continually(dateSeq)
  .flatMap(ticks => ticks.map(_ => {
    date = date.minusMonths(1)
    date
  }))
allDates.take(5).toList

我的问题是,我使用var每次将当前日期降低一个月。

有什么方法可以摆脱var

I'm trying to generate an infinite list of dates by substracting one month from the current date, i want to do this using Streams.

Here's what i've done so far :

import org.joda.time.LocalDate

var date = new LocalDate("2022-05-24")
val dateSeq = Seq(date)
val allDates = dateSeq.toStream ++ Stream.continually(dateSeq)
  .flatMap(ticks => ticks.map(_ => {
    date = date.minusMonths(1)
    date
  }))
allDates.take(5).toList

My problem is that im using a var to decrement the current date by a month each time.

Is there any way to get rid of that var ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

独木成林 2025-02-08 00:04:07

您只需要。术语而不是

    vall allDates = Stream.iterate(LocalDate.now) { _.minusMonth(1) }

You just want .iterate rather than .continually:

    vall allDates = Stream.iterate(LocalDate.now) { _.minusMonth(1) }
寻梦旅人 2025-02-08 00:04:07

使用@luis MiguelMejíaSuárez解决方案:

import org.joda.time.LocalDate

val numberOfMonthsBack = 5
val date = new LocalDate("2022-05-24")
val dateSeq = Seq(date)
val allDates = dateSeq.toStream ++ Stream.continually(dateSeq)
  .zip(Stream.from(1))
  .flatMap(ticks => 
    ticks._1.map(x => x.minusMonths(ticks._2))
  )
allDates
  .take(numberOfMonthsBack).toList

Using @Luis Miguel Mejía Suárez solution:

import org.joda.time.LocalDate

val numberOfMonthsBack = 5
val date = new LocalDate("2022-05-24")
val dateSeq = Seq(date)
val allDates = dateSeq.toStream ++ Stream.continually(dateSeq)
  .zip(Stream.from(1))
  .flatMap(ticks => 
    ticks._1.map(x => x.minusMonths(ticks._2))
  )
allDates
  .take(numberOfMonthsBack).toList

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文