Тестить аутофмемори вместе с другими тестами - это шедевр) Как должны потом выполняться остальные тесты?
Можно ведь выполнить лишь только то,что содержится в it should "blabla"?
Это учебный пример.
>2. Не делай так никогда - val Some(…)=
К чему может привести код из примера?
Я еще разбираюсь и в скале и в конкарренси, поэтому по остальным вопросам не могу дать конкретного ответа. В .map, как я понял, он создает и запускает новые треды, затем в последовательности пар ищет свалившиеся треды, или нет?
То, что я написал к конкаренси не имеет отношения. Это общие претензии к организации кода. Конкретно про map - в случае (1 to N) - будет лейзи и файнд тоже лейзи отработает, поэтому там мап не так страшен. Но в общем случае можно забыть где итератор, а где материализация и твой код будет молотить почем зря. Если у тебя и так несколько строк когда в мап, а в файнд нет никаких спец проверок - которыми можно было оправдать семантическое разделение для лучшего восприятия - то стоит сразу пользовать файнд, без мапа. val Some(…) - это безусловный матчинг неполного набора, который может привести к патматеррор там где про это забудешь. Привыкнешь так писать - будешь натыкаться на детские ошибки в рантайме. Спрашивается - зачем тебе скала? весь тест можно заменить на более опрятный и без тавтологий val failed = (1 to Integer.Max).find { i ⇒ try { new Thread(makeRunnable(i)).start() false } catch { case e: OutOfMemoryError if e.message == «Unable to create new native thread message» ⇒ true } } failed.nonEmpty should be true
Обсуждают сегодня