Вопросы по теме '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 просмотров

Трансформатор монад для понимания
Рассмотреть возможность: 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 просмотров

Каковы правила области видимости для 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 просмотров

Scala и для понимания: ошибки компиляции при реализации карты, плоской карты и фильтра в качестве методов экземпляра, которые полагаются на сопутствующий объект.
Заранее приношу свои извинения за любой сомнительный синакс. Я изучаю новый язык, и, безусловно, ценю помощь! В целях обучения я пытаюсь настроить собственную реализацию списка (с именем Mlist, что означает «мой список»), которая может работать со...
93 просмотров

Перебрать 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 просмотров

Производительность нескольких генераторов в выражениях 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 просмотров

сопоставление шаблонов scala для понимания
В scala у вас может быть понимание, которое перебирает список объектов, а затем создает массивы значений на основе типа одного из атрибутов элементов? Итак, предположим, что у меня есть список элементов, и каждый элемент имеет атрибут, и атрибут...
4143 просмотров

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 просмотров