Печать из логических выражений в Scala - PullRequest
0 голосов
/ 05 ноября 2019

В Scala у меня есть выражение вроде:

 prods <- Products.getAll(pr => (pr.stockOn >= from &&
                                 !(outOfDate(pr.id))
                                )
                         )

Можно ли использовать команду println в выражении:

(pr.stockOn >= from && !(outOfDate(pr.id)) )

Что-то вроде:

 (pr.stockOn >= from && !(outOfDate(pr.id)) && (println(outOfDate(pr.id)))

Thx

Ответы [ 2 ]

3 голосов
/ 06 ноября 2019

Некоторым людям нравится

pr.stockOn >= from && !outOfDate(pr.id) && { println(outOfDate(pr.id)) ; true }

В 2.13 есть

import scala.util.chaining._

outOfDate(pr.id).tap(println).pipe(!_)

, преимущество которого состоит в том, что он странно загадочен.

1 голос
/ 05 ноября 2019

Да, вы можете иметь несколько строк кода в теле функции. Я бы написал так:

prods <- Products.getAll{pr =>
  val ood = outOfDate(pr.id)

  println(ood)

  pr.stockOn >= from && !ood
}

Последнее значение в блоке является результатом блока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...