и за 3 года вы не поняли почему не стоит делать многомерные массивы?Опыт программирования: Больше трех лет
Shadows In Rain писал(а): Юля-Юлечка, на технических форумах любая проблема решается оченнь легко. Нужно просто показать сиськи. С пруфами.
Модераторы: Subb98, liFe iS GoOD
и за 3 года вы не поняли почему не стоит делать многомерные массивы?Опыт программирования: Больше трех лет
RevCrew писал(а):OtherWorld, у вас в статусеи за 3 года вы не поняли почему не стоит делать многомерные массивы?Опыт программирования: Больше трех лет
Mistrick писал(а):OtherWorld, у вас есть определение слова массив? Это набор однородных данных, то что пишите вы нормальным вариантом использования не назвать.
С enum вы сделаете массив из что-то вроде структуры, т.е. набор одинаковых данных, где каждый элемент "структура", и в ней уже неоднородные данные.
RevCrew писал(а):OtherWorld, к счастью, вам вопрос актуален не только в pawn, вы можете прочитать в гугле или на хабре, почему плоха многомерная логика (многомерные массивы). К сожаленью, в Pawn, чтобы упростить эту логику есть только enum.
RevCrew писал(а):OtherWorld, как-нибудь так. Но идея изначально плохая, думаю если вы расскажите что вы хотите в итоге получить, и зачем вам 3-мерный массив, то можно переделать по другому, более простому варианту
- Код: Выделить всё
native test()
new test[][][] = test();
error 001: expected token: "{", but found "-identifier-"
new im_array[][][] = { { 1,"Два",3 }, { 4,"Five",6 } };
enum Test {
int_one,
str[16],
int_two
};
new enum_array[][Test] = {
{ 1, "Два", 3 },
{ 4, "Five", 6 }
};
// native copy(index, arr[], size);
public native_copy(plugin, params) {
enum { arg_index = 1, arg_array, arg_size };
set_array(arg_array, enum_array[get_param(arg_index)], get_param(arg_size));
}
OtherWorld писал(а):Не знал, спасибо! Чтобы я без "учителей" делал
OtherWorld писал(а):И если такой вариант передачи данных "плохой" то почему есть возможность так их передавать??
OtherWorld писал(а):C enum дела не имел по этому можно пример конкретно по массиву в ПП?
Subb98 писал(а):OtherWorld писал(а):Не знал, спасибо! Чтобы я без "учителей" делал
И зачем вам вообще отвечать после такого откровенного хамства? Это вам нужна помощь или кому-то из нас? Или это вы чего-то не знаете / не понимаете или кто-то из нас? Вроде, вы. А ведёте себя так, будто всё с точностью до наоборот.OtherWorld писал(а):И если такой вариант передачи данных "плохой" то почему есть возможность так их передавать??
А почему этой возможности быть не должно? Если так сделать можно, это не значит, что это хорошая практика. Иначе понятия "говнокод" не существовало бы вовсе.OtherWorld писал(а):C enum дела не имел по этому можно пример конкретно по массиву в ПП?
Не надо вам примеров, вы и сами решите, что для вас хорошо, а что нет.
Subb98 писал(а):А почему этой возможности быть не должно? Если так сделать можно, это не значит, что это хорошая практика. Иначе понятия "говнокод" не существовало бы вовсе.
Говнокод — это код не похожий на код оппонента. Понять чужой код — это долгая и нудная работа. А если код написан так, как будто ты его написал, то ты его понимаешь и это экономит время на доработку и отладку.
Любой начинающий программист первым делом бросается переписывать чужие программы. Даже если они абсолютно работоспособны, даже если после переписывания пропадет часть функционала и появятся баги.
Это сказано с долей юмора конечно.
Говнокод — это применение не самых лучших (с точки зрения большинства) решений проблемы. Ну к примеру говнокодом назовут выход из цикла установкой счетчика в максимальное значение.
for(i=0; i<1000; i++)
i=INT_MAX;
Это полностью работоспособное решение, не тормозное, не громоздкое. Но лучше применять для этих целей break. Потому что так все привыкли. Так же говнокодом является повторение функционала стандартной библиотеки, например string или auto_ptr. А так же структура (архитектура) программы, отличная от любимой у оппонента. Например, не использование MVC при разработке программы.
К примеру, я использую конструкцию:
void main() {
// ...
void init_dialog(); init_dialog();
void init_referenceControl(); init_referenceControl();
void init_functionsHelp(); init_functionsHelp();
void init_new_style(); init_new_style();
// ...
}
</souce>
Вместо определения функций в .H файлах, я это сделал прямо на месте. Говнокод. Можно было бы создать кучу .H файлов, использовать одну из множества библиотек выполняющих инициализацию. Но это максимально простой способ, способ без использования доп классов, функций и программ; так легче отлаживать, так наглядно изображена последовательность инициализации, так не надо писать кучу #include, и кроме функции MAIN, функции инициализации ни от куда не вызвать.
Говнокод - потому что люди бы не так написали.
OtherWorld писал(а):Если человек в этом разбирается он не будет спорить и доказывать что-то, а вопрос был конкретным "как получить многомерный массив нативом"... ответил только RevCrew по делу и я не спрашивал "как лучше"...
OtherWorld писал(а):По моему вы не совсем понимаете значение слова "говнокод"
OtherWorld писал(а):Ясно, ответа на вопрос из первого поста никто не знает... ладно, сам разберусь.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15