общие претензии к организации кода. Конкретно про 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
спасибо, пойду ковырять дальше
Обсуждают сегодня