Вопросы по теме 'for-comprehension'
Когда scala's for-computing lazy ленив?
В Python я могу сделать что-то вроде этого:
lazy = ((i,j) for i in range(0,10000) for j in range(0,10000))
sum((1 for i in lazy))
Это займет некоторое время, но использование памяти будет постоянным.
Такая же конструкция в scala:...
4639 просмотров
schedule
15.12.2022
Трансформатор монад для понимания
Рассмотреть возможность:
def xs(c: String): Option[List[Long]] = ...
val ys: Stream[Long] = ...
Теперь я бы написал метод примерно так:
def method(oc: Option[String]): Option[Long] = for {
c <- oc
list <- xs(c)
} yield{...
571 просмотров
schedule
11.08.2023
Каковы правила области видимости для vals в Scala for-comprehensions
Когда я использую val в for-comprehension, я получаю предупреждение:
предупреждение: ключевое слово val для понимания устарело
несмотря на производство в приложении синтаксиса спецификации.
Это говорит о том, что когда я делаю что-то...
3280 просмотров
schedule
05.05.2022
Почему этот список будущих преобразований в список будущего компилируется и работает?
Отказ от ответственности: приведенный ниже фрагмент кода относится к одному из текущих курсов Coursera. Будем считать, что оно размещено только в учебных целях и не должно использоваться для отправки в качестве решения домашнего задания.
Как...
2890 просмотров
schedule
19.08.2022
Scala для понимания для orElse вместо flatMap
Я хорошо знаком с for пониманием и flatMap в опциях.
Итак, я знаю, что вы можете сделать что-то вроде
val a: Option[_] = for {
foo <- Some(x)
bar <- Some(y)
baz <- Some(z)
} yield baz
что дает мне Some(z) , если ничего...
796 просмотров
schedule
05.04.2023
Scala либо с кортежем как Right
Предположим, у меня есть следующий код:
val either: Either[String, (Int, Int)] = Right((1,2))
for {
(a, b) <- either.right
} yield a + b
Когда я оцениваю это в REPL, я получаю
:13: ошибка: конструктор не может быть создан для...
1535 просмотров
schedule
11.09.2023
Почему этот простой для понимания Scala не выполняет фьючерсы?
Я застрял, пытаясь понять, почему это не работает:
import scala.concurrent.future
import scala.concurrent.Future
import scala.concurrent.ExecutionContext
import scala.concurrent.ExecutionContext.Implicits.global
object FutureTest {
def...
369 просмотров
schedule
25.03.2022
Составление фьючерсов с помощью For Comprehension
У меня есть приложение Play Framework, использующее ReactiveMongo с MongoDB, и у меня есть следующий код:
def categories(id: String): Future[Vector[Category]] = {...}
....
val categoriesFuture = categories(id)
for {
categories: Vector[Category]...
292 просмотров
schedule
24.03.2022
Scala и для понимания: ошибки компиляции при реализации карты, плоской карты и фильтра в качестве методов экземпляра, которые полагаются на сопутствующий объект.
Заранее приношу свои извинения за любой сомнительный синакс. Я изучаю новый язык, и, безусловно, ценю помощь!
В целях обучения я пытаюсь настроить собственную реализацию списка (с именем Mlist, что означает «мой список»), которая может работать со...
93 просмотров
schedule
09.03.2024
Перебрать scala Vector и соединить определенный объект со следующим.
Предполагая, что у меня есть коллекция (Vector[Int]), 1,2,5,4,3,5,5,5,6,7,7 и я хочу получить другую коллекцию (Vector[Vector[Int]]), соединяющую каждое число 5 со следующим числом (1),(2),(5,4),(3),(5,5),(5,6),(7),(7) , какие у меня есть варианты,...
1183 просмотров
schedule
11.06.2024
Производительность нескольких генераторов в выражениях Scala for?
Пример:
for(x <- c1; y <- c2; z <- c3) yield {...}
что можно перевести на:
c1.flatMap(x => c2.flatMap(y => c3.map(z => {...})))
or:
for(x <- c1) for (y <- c2) for (z <- c3) yield {...}
Временная...
251 просмотров
schedule
08.09.2022
сопоставление шаблонов scala для понимания
В scala у вас может быть понимание, которое перебирает список объектов, а затем создает массивы значений на основе типа одного из атрибутов элементов? Итак, предположим, что у меня есть список элементов, и каждый элемент имеет атрибут, и атрибут...
4143 просмотров
schedule
07.04.2024
Scala для понимания — объединение Future с IndexedSeq
Можно ли добиться чего-то вроде этого:
for {
numberOfLines <- Future { getNumberOfLines() }
i <- 0 to numberOfLines
result <- Future { extractResultFromLine(i) }
} yield result
Надеюсь, понятно, каковы мои намерения.
83 просмотров
schedule
22.05.2023
Как пример Simple IO Type избавиться от побочных эффектов в FP в Scala?
Я читаю главу 13.2.1 и наткнулся на пример, который может обрабатывать ввод ввода-вывода и тем временем избавляться от побочных эффектов:
object IO extends Monad[IO] {
def unit[A](a: => A): IO[A] = new IO[A] { def run = a }
def...
191 просмотров
schedule
13.03.2024
Для понимания с Future[String] и Future[List[String]]
Упрощенный код:
val one: Future[String] = Future("1")
val many: Future[List[String]] = Future({"1","2","3"})
for {
a <- one
b <- many
} yield {
doSomething(a,b) // Type mismatch, expected String, actual: List[String]
}
Что я...
74 просмотров
schedule
07.12.2022
ADT против любого из исключений
Итак, текущая реализация использует твиттер Future вместе с генерацией исключений, чтобы сигнализировать о недопустимом варианте использования вместе с for-comprehensions , например:
def someMethod(a: ...): Future[X] = {
// do something
//...
328 просмотров
schedule
01.04.2023
Как сгладить понимание с помощью эффекта траверса scala cats?
У меня есть код, структурно идентичный этому, и я не уверен, как лучше его очистить? Существуют тривиальные операции ввода-вывода и дополнения, поэтому пример компилируется без дополнительных методов.
Я бы действительно хотел, чтобы он не был...
379 просмотров
schedule
27.05.2022