C: A; class D: A }
и when (a) { is B -> fB(a); is C -> fC(a); is D -> fD(a) }
работает так же быстро, как
abstract class A(val tp: Int) { class B: A(1); class C: A(2); class D: A(3) }
и when (a.tp) { 1 -> fB(a as B); 2 -> fC(a as C); 3 -> fD(a as D) }
?
Что такое "работает быстро"? Перебор по типам очень шустрый на JVM. На JS не очень
во-первых, я себе глаза сломал, разбирая этот код на стейтменты. во-вторых, лучше сразу делать бенчмарки конкретного рантайма
это что-то типа использовать @IntDef вместо enum class ?
что-то типа, но с @IntDef логика была в том, что от этих перечислений кроме самого факта, что это перечисление, ничего не требовалось, а ресурсы (память) расходовались впустую при обычных enum
имхо это экономия на копейках, которая почти никогда не поможет
Обсуждают сегодня