не очень нравится
moko 16.10 23:12
/ 17.10 01:00
Во-первых, мне кажется странным метод, который то "разворачивает" элементы (для хеша/массива), то нет. А с объектом он как себя ведет? А почему, ведь это по сути хеш?
Во-вторых, сейчас create делает полную копию параметра, включая "дырки". Для нескольких аргументов это довольно странно. Особенно если там будет несколько хешей с цифровыми индексами.
В-третьих, так и не предложено решение для массива из одного элемента, кроме сочетания create/append.
В-четвертых, предложенный вариант прямой путь к минусам, от которых мы страдали с хешами (к счастью, уже победили). Вот такой например код:
@setup[options]
$a[^array::create[
^if($options.o1){
$.1(true)
}
^if(def $options.o5){
$.5[$options.o5]
}
]]
Если не будет опций, в предложенном варианте получится не пустой массив (как сейчас), а массив с "пробельным" элементом.
Текущая реализация мне кажется более целостной. Если вопрос в непонятности сути конструктора, то да, название new не самое удачно (разве что короткое:). Правда make и build мне тоже не очень нравятся. Предлагаю рассмотреть еще ^array::array[1;2;3], ^array::elements[1;2;3], ^array::items[1;2;3], ^array::list[1;2;3], ^array::combine[1;2;3], может еще лучше варианты будут.