Формат или присваивание?

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
106
Реакции
222
Помог
1 раз(а)
Всех приветствую, совершенно небольшой вопрос.
Существует множество способов загнать в массив некоторую строку, но хочу затронуть конкретно подобное:

Код:
new some_array[64]
1)
some_array="Some text"
2)
formatex(some_array, charsmax(some_array), "Some text")
Является ли использование метода 1 "Некрасивым"?
Есть ли какая то существенная разница между таким присваиванием строки?(Как работает форматех знаю)

Так же до неопределенного времени пользовался подобным:

Код:
formatex(some_array, charsmax(some_array), some_string)
Или даже так
formatex(some_array, charsmax(some_array), "%s", some_string)
Но в итоге обнаружил функцию copy и решил использовать её как правильный инструмент для копирования строк
Аля:
Код:
copy(some_array, charsmax(some_array), some_string)
Суть вопроса, в операциях подобного уровня есть ли смысл заморачиваться по поводу этих методов решения задачи?
 
Сообщения
144
Реакции
276
Помог
1 раз(а)
copy быстрее должен отработать. Для форматирования во многих случаях подходит fmt.

format и formatex - это уже крайние меры, которые можно использовать для больших или составных массивов (как в меню).
 
Сообщения
106
Реакции
222
Помог
1 раз(а)
SISA, А конкретно по вопросу прямого присваивания строки массиву? Является ли это плохим примером кода или же можно не беспокоиться в этом плане?
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
кстати, не забываем про strcat(), дабы вот таким:
Код:
#define ADDBuf(%1) iLen += formatex(szBuffer[iLen], charsmax(szBuffer) - iLen, %1)
извращением не пользоваться. (если конечно не фанаты умопомрачительных оптимизаций).
 
Сообщения
144
Реакции
276
Помог
1 раз(а)
SISA, А конкретно по вопросу прямого присваивания строки массиву? Является ли это плохим примером кода или же можно не беспокоиться в этом плане?
Запись уже составленных данных в массив, в первую очередь, это copy. Форматирование нужно для изменения данных в массиве.

Принципиальной разницы нет, но лично мне проще выстроить 3 аргумента в функции, чем 4 и не задумываться о том, правильно ли я составил формат.
 
Последнее редактирование:
Сообщения
106
Реакции
222
Помог
1 раз(а)
SISA, Этот вопрос понял, отлично
А пример: some_array="Some string" допустимо использовать? Оно работает, разумеется, но именно подобная запись вместо того же fmt(), к примеру. Если мне нужно занести в массив заранее известную строку, без необходимости именно форматирования из нескольких переменных
 

Ayk

Сообщения
763
Реакции
478
Помог
19 раз(а)
Код:
some_array="Some string"
Здесь текст это строковый литерал, а это значит все операции на уровне/этапе компилирования.
fmt() это натив, а это вызов ядра AMXX, время и ресурсы на ответ.

Они (литералы) всегда так и используются. Пример из ReCSDM:
Код:
new const g_NrTicketsMenu[] = "CSDM: Number of Tickets Menu";
 

Ayk

Сообщения
763
Реакции
478
Помог
19 раз(а)
Mistrick Нет.
Про компиляцию неправильно выразился выше, но время редактирования истекло.
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
wopox1337, причем тут оптимизация?
 

hajimura

Е777КХ05
Сообщения
290
Реакции
228
Помог
6 раз(а)
fl0wer, исторически сложившийся стереотип еще со времен существования Неугомона
 
Сообщения
169
Реакции
462
Помог
2 раз(а)
Странное название темы, как по мне "Формат или присваивание?"
Ответ ведь очевиден. Если нужно просто присвоить - присваивание. Если нужно форматировать - форматирование.
Является ли использование метода 1 "Некрасивым"?
new var = 1;
А это является ли "Некрасивым" ? Или в amxx нужно добавить натив типа set_var, что бы присваивать значения переменным? ))
some_array="Some string" допустимо использовать?
Минздрав и роскомнадзор пока вроде не запрещали.
Присваивание строк через натив и через оператор присваивания является корректным. Оба способа по сути делают одно и тоже: копируют данные из одной области памяти в другую.
Разница в том, что через натив, в отличии от оператора присваивания, можно указать максимальную длину строки, со всеми вытекающими. Что касается производительности, оператор будет гораздо быстрее натива, но вопрос производительности актуален далеко не во всех случаях.
 
Сообщения
106
Реакции
222
Помог
1 раз(а)
Все что хотел, увидел)
Спасибо всем за ответы, можно закрывать
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу