XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
J
expert
offline
Опыт: 48,447
Активность:
Оператор сложения строк
вариант ToChilo более нормальный, только null на "" заменить... мне так больше нравится
Перенесено из темы с обычным вопросом ©Hellfim
ну и кто просил делать мой пост первым, я теперь как идиот задавший наиглупейший вопрос выгляжу =/, соедени обратна
Нет, ты не выглядишь как идиот, это просто обычный срачь по интересному вопросу выделенный в отдельную тему ©Hellfim

Отредактировано Hellfim, 21.08.2009 в 17:28.
Старый 15.08.2009, 23:21
ScorpioT1000
Работаем
offline
Опыт: отключен
нет, нуль правильней) ибо пустая ссылка, а там не пустая
ScorpioT1000 добавил:
т.е. операция сложения возвратит второй аргумент вместо суммы: болванка "" + "w"
Старый 16.08.2009, 00:26
J
expert
offline
Опыт: 48,447
Активность:
ScorpioT1000
т.е. операция сложения возвратит второй аргумент вместо суммы: болванка "" + "w"
операция сложения возвращает сумму двух аргументов, а не "второй аргумент вместо суммы" при особых обстоятельствах
неужели ты не знаешь что из себя представляет пустая строка?
какраз "" - пустая строка, а null - это отсутствие строки, то что в варе идет подстановка несуществующей строки пустой при сложении конечно же хорошо, но логически поступать так не правильно
но работать будет так и так, я же ясно сказал
мне так больше нравится

Отредактировано J, 16.08.2009 в 14:18.
Старый 16.08.2009, 01:21
ScorpioT1000
Работаем
offline
Опыт: отключен
какраз "" - пустая строка, а null - это отсутствие строки
я сказал что нуль пустая строка? я сказал, что это пустая ссылка, а "" - не пустая ссылка, а полная - на существующую объявленную строку (пустую).
При сумме пустая ссылка просто пропустится и вернется ссылка на вторую строку "w" (я так понимаю).
А если там будет создано "", то он сложит их как "w"+"" и побежит в стек(а точней хэш-таблицу) по ключу(чтоб объявить новую при отсутствии), найдет там уже созданную "w" и вернет ссыль на нее.
Я ничего не упустил?
ScorpioT1000 добавил:
то что в варе идет подстановка несуществующей строки пустой при сложении конечно же хорошо
какраз нифига не будет так)
Старый 19.08.2009, 15:32
Toadcop

offline
Опыт: 54,313
Активность:
незнаю насчёт "w"+null я не тестил... кто знает близзов О.о может и будет аллокейт новой строки =)))
но в целом офк "" - строка null - ничего.

ну проверьте О_О

Toadcop добавил:
Цитата:
т.е. операция сложения возвратит второй аргумент вместо суммы: болванка "" + "w"

тем не менее первый символ будет "w" =) иначе бы кучя карт и т.п. не работали бы...

Toadcop добавил:
хотя если честено... это надо брать и тестить =)
Старый 20.08.2009, 01:10
ScorpioT1000
Работаем
offline
Опыт: отключен
просто было бы разумно у оператора сложения, если один из аргументов не объявлен, возвращать второй
Старый 20.08.2009, 01:24
Toadcop

offline
Опыт: 54,313
Активность:
Код:
function echo takes string s returns nothing
        call DisplayTextToPlayer(GetLocalPlayer(),0,0,s)
endfunction

function s2i takes string s returns integer
   return s
   return 0
endfunction


function Trig_zzzxx_Actions takes nothing returns nothing
   local string s=null
   local string s1=""
   local string ss="Fuzzy"
   call echo(I2S(s2i(ss)))
   call echo(I2S(s2i(s+ss)))
   call echo(I2S(s2i(s1+ss)))
   call echo(I2S(s2i(ss+s)))
   call echo(I2S(s2i(ss+s1)))
   call echo(I2S(s2i(s+ss+s)))
   call echo(I2S(s2i(s1+ss+s1)))
   call echo(I2S(s2i(s+ss+s1)))
endfunction


при вызове Trig_zzzxx_Actions был показан один и тот же результат во всех echo. так что можно не переживать =)

+ в целом юзать "" - НЕЛЬЗЯ НИКОГДА! ибо "" != null (ну это выше уже было написано.)
для сравнений надо юзать тока ==null !=null и тем самым "обнулять" null'ом.

^ это очень важное ибо после сохр/загр игры таблица стрингов ресетитса и заного создётся. и все "" не востанавливаютса. и там остаётса null (например в массивах или переменых)
Старый 20.08.2009, 02:38
J
expert
offline
Опыт: 48,447
Активность:
ScorpioT1000
А если там будет создано , то он сложит их как "w"+ и побежит в стек(а точней хэш-таблицу) по ключу(чтоб объявить новую при отсутствии), найдет там уже созданную "w" и вернет ссыль на нее.
тоже самое он будет делать и при сложении с нулом, при сложении строк сначала все члены складываются, а потом независимо от того какие они были побежит сверять с таблицей
в отличии от нула, строка "" даже не запустит первую итерацию цикла копирования символов т.к. условие того что длина больше нуля не будет выполнено, длина эта хранится в переменой джазовой строки и повторно не высчитывается, так что отличие от использования нула лишних только пара условии на с++ уровне
Toadcop, сного много слов и мало смысла... ну то что для обнуления нужно юзать нул, и обнаружения обнуления сравнивать с нулом это сама очевидность, но речь то идет о сложении
логически не правильно складывать что-то с ничем, но работает и так и так так что как обычно всем пофиг и каждый делает что хочет
например не инициализированные переменные при использовании заменялись бы на 0, это бы не значило что не инициализировать их экономнее и правильнее

Отредактировано J, 20.08.2009 в 07:16.
Старый 20.08.2009, 03:37
ScorpioT1000
Работаем
offline
Опыт: отключен
при вызове Trig_zzzxx_Actions был показан один и тот же результат во всех echo. так что можно не переживать =)
тт естественно, т.к. "" не дает никакого символа при сложении... я думал ты скорость потестишь)
ScorpioT1000 добавил:
условие того что длина больше нуля не будет выполнено
я уверен, что проверка на нуллевость аргументов при сложении идет раньше, чем проверка длины отдельных строк)

Отредактировано ScorpioT1000, 21.08.2009 в 01:26.
Старый 21.08.2009, 01:20
J
expert
offline
Опыт: 48,447
Активность:
ScorpioT1000
я уверен, что проверка на нуллевость аргументов при сложении идет раньше, чем проверка длины отдельных строк)
J
так что отличие от использования нула лишних только пара условии на с++ уровне
J
например не инициализированные переменные при использовании заменялись бы на 0, это бы не значило что не инициализировать их экономнее и правильнее
Старый 21.08.2009, 01:21
Toadcop

offline
Опыт: 54,313
Активность:
Цитата:
Toadcop, сного много слов и мало смысла... ну то что для обнуления нужно юзать нул, и обнаружения обнуления сравнивать с нулом это сама очевидность, но речь то идет о сложении

T_T да и ? я проверил разницы 0 что дальше ? мне кажетса ты форумом ошибься Оо

Цитата:
я думал ты скорость потестишь)
вам на бру надо имхо. много шума ниочём...
Старый 21.08.2009, 02:48
J
expert
offline
Опыт: 48,447
Активность:
Toadcop
во первых - с тобой скушно
во вторых - ты не фтеме
в третьих - ну да, ризницы ноль
в четвертых - что такое бру?
Старый 21.08.2009, 02:54
iiiCpu

offline
Опыт: 509
Активность:
Toadcop, J, разница есть, " " ест ресурс на пустые ссылки. при событиях с малым периодом " " вешает вар и иногда систему, тогда как null, провиснув, всё-таки выплывает.
ЗЫ: а это ничего что я тут вякнул?
ЗЗЫ: И ваабще, прикольный холивар!
Старый 21.08.2009, 03:00
Toadcop

offline
Опыт: 54,313
Активность:
Цитата:
во первых - с тобой скушно

дык я понял что тебе нужны клоунизмы... фактически эта тема очередная ниа4ём.
Старый 21.08.2009, 04:12
ScorpioT1000
Работаем
offline
Опыт: отключен
я проверил разницы 0 что дальше ?
вот зачем было проверять если это все очевидно будет один результат, это нинадо было проверять, там разговор о другом идет :)
ScorpioT1000 добавил:
ну клоуз тогда
Старый 21.08.2009, 11:37
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 11:09.