Size: a a a

Scala User Group

2020 December 29

AD

Apache DOG™ in Scala User Group
assert выбросит исключение
источник

AD

Apache DOG™ in Scala User Group
Вайнот ещё один мап?
источник

MM

Michael Merino in Scala User Group
мне и нужно исключение, это тесты :)  вопрос - как после вычислений достать изначальное значение, чтобы сверить с результатом?
источник

VR

Valery Ryaboshapko in Scala User Group
Michael Merino
всем добрый день. подскажите, пожалуйста, как правильно закодить такое?
 option.map{ case obj: Subclass => doThing1 obj} //1
       .map(_ => doThing2 _ ) //2
       .foreach(x => assert (x == obj)) //3
я правильно понимаю, что мне нужно протащить состояние из первой строчки в третью? как это правильно сделать?
.map и .foreach не обязательно делать последовательно, одно можно вкладывать в другое. Если вам нужно сравнить исходные данные с результатом вычислений, можно сделать как-то так

option.map {
 case obj: Subclass =>
   val result = doThing2(doThing1(obj))
   assert(result == obj)
   result
}

Но этот код плох по целому ряду причин, включая эксепшн, о котором говорит Апач. Что нужно сделать, если значение поменялось? Вернуть None или воспроизвести побочный эффект?
источник

VR

Valery Ryaboshapko in Scala User Group
И что, если obj окажется не инстансом Subclass?
источник

N

Nikolai in Scala User Group
for {
obj <- option
newValue <- do things(obj)
_ = assert(newValue == obj)
} yield ()
источник

AD

Apache DOG™ in Scala User Group
Michael Merino
мне и нужно исключение, это тесты :)  вопрос - как после вычислений достать изначальное значение, чтобы сверить с результатом?
источник

N

Nikolai in Scala User Group
Nikolai
for {
obj <- option
newValue <- do things(obj)
_ = assert(newValue == obj)
} yield ()
Но это если надо исключение кидать. Лучше сделать как написал Апач, конечно
источник

MM

Michael Merino in Scala User Group
Nikolai
for {
obj <- option
newValue <- do things(obj)
_ = assert(newValue == obj)
} yield ()
я приблизительно так и сделал, а мой изначальный пример если и жизнеспособный, может потерять понятность и удобство. я понял, спасибо.
источник

AS

Alex Sh in Scala User Group
val optionValue = Option(1234)
def maybeChangeValue1(in: Int) = in + 1
def maybeChangeValue2(in: Int) = identity(in)

val maybeUpdated = optionValue.map(maybeChangeValue1)
//val maybeUpdated = optionValue.map(maybeChangeValue2)
val isUpdated = optionValue != maybeUpdated

println(isUpdated)
источник

AS

Alex Sh in Scala User Group
Зачем for-compr если оно и так работает
источник

AS

Alex Sh in Scala User Group
А чтобы выкинуть исключение в тестах, можно добавить assert по флагу isUpdated после вычисления
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Michael Merino
всем добрый день. подскажите, пожалуйста, как правильно закодить такое?
 option.map{ case obj: Subclass => doThing1 obj} //1
       .map(_ => doThing2 _ ) //2
       .foreach(x => assert (x == obj)) //3
я правильно понимаю, что мне нужно протащить состояние из первой строчки в третью? как это правильно сделать?
option.collect{
 case obj : Subclass =>
           doThing1(obj).flatMap(doThing2).filter( _ == obj)
}.flatten
источник

R

RAFIZ in Scala User Group
что делать если я уже отредактировал исходник, а судя по ошибкам с которыми рушится сбт, видно, что он пытается откомпилировать прежнюю версию файла?

кроме как выходить из сбт и заходить заново
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
reload
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
но вообще странная ситуация
источник

R

RAFIZ in Scala User Group
пробовал
источник

IA

Ivan Aristov in Scala User Group
RAFIZ
пробовал
clean
источник

R

RAFIZ in Scala User Group
тоже пробовал
источник

S

Simon in Scala User Group
NTFS? Кодогенерация есть?
источник