![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: нет Всего: 161 |
Всем привет.
Не смог сходу придумать по какому критерию загуглить как вычисляются выражения, потому решил задать тупой вопрос. Псевдокод:
Вопросы 1) Могу ли я закладываться на то, что func2 будет всегда выполнится строго после func1? 2) Могу ли я закладываться на то, что func2 не выполнится всегда, если func1 не вернет истину? 3) Можно ли как нибудь принудить обе функции выполняться всегда? -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
Skynin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 1.7.2007 Где: Харьков Репутация: 6 Всего: 10 |
гуглите
Приоритеты операций и порядок вычислений Java 1. да. 2. да. правда завернули как-то не по людски. лучше: ".... func2 никогда не выполнится, если func1 вернет ложь?" 3. да. |
|||
|
||||
Pawl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 7 Всего: 28 |
Да, вот так:
-------------------- В действительности всё совсем не так, как на самом деле |
|||
|
||||
Zloxa |
|
||||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: нет Всего: 161 |
Привык мыслить в трехзначной логике. ![]() Я понимаю, что один топик-один вопрос, но Жаве логический unknown не ведом вовсе? Как?(третий вопрос) ![]() Так на официальную доку не выгуглишь )) Подобрал мантру "Java expression evaluation order" Выгуглил
Т.е. как бы сначала дают гарантии, но потом отказываются от обязательств ![]() Статус документа, вроде specification, т.е. закладываться на 1) как бы можно, но, в то же время, - не рекомендуется. Какую бы мантру подобрать ко второму вопросу? ![]() Добавлено @ 12:03 В моем случае вопрос, наверное следовало бы поставить иначе - можно ли отключить Short-circuit evaluation. Мож там дирректива компилятору какая или еще ченить... Это сообщение отредактировал(а) Zloxa - 14.2.2012, 12:07 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
||||
|
|||||
jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Нет. И я не очень понимаю зачем так делать. Если уж Ваш метод имеет side effect, который непременно нужен, то лучше бы разделить такой метод на два. Вам же потом понятнее читать будет. -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: нет Всего: 161 |
Делать так не обязательно. Важно знать может ли это быть сделано. Третий вопрос, это как бы уточнение ко второму. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
Skynin |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 1.7.2007 Где: Харьков Репутация: 6 Всего: 10 |
Давно говорю, в ВУЗах не тому учат. Нужно учить гуглить! Все равно книжек никто не читает. http://en.wikipedia.org/wiki/Short-circuit_evaluation Хотя на русском тоже начиная с справочника Шилдта об этом сказано См. Глава 4 Операции "Замыкающие логические операции"
Нельзя, ибо редко нужно такое свойство. А дай в руки такое - поведение кода станет непредсказуемым. Нужно будет где-то смотреть "включено или выключено?" И как уже указали, в Java легко "включить" полное вычисление операндов, используя & или | а не && или ||. Если очень хочется. Это сообщение отредактировал(а) Skynin - 14.2.2012, 19:01 |
||||
|
|||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: нет Всего: 161 |
Skynin, не иронии ради, но лишь понимания положения дел для. Спецификация Java плохо описана производителем или же мало представлена в интернете, если за пруфами приходится обращаться к википедии или же технической публицистике, а не к официальной документации? К сожалению, мой опыт чтения книг говорит о том, что далеко не все современные книги следует читать. Многие откровенно вводят в заблуждение. Многие учат порочному, потому ссылке на книгу всегда предпочтительнее ссылка на официальную документацию. Хотя, конечно, да - название "Java 2 Programmer's Reference" и регалии автора, внушают определенное доверие, но, тем не менее это книга, а не документ, и издается она не от имени производителя платформы. По всему видать, я чересчур избалован документацией по oracle database. Редкая специфика в ней не освещена или же освещена не однозначно. Это сообщение отредактировал(а) Zloxa - 15.2.2012, 11:57 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
Dummy |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 21.5.2007 Репутация: 9 Всего: 19 |
Ну зачем же так-то... Вот самая что ни на есть официальная документация по вашему вопросу. Не скажу, что Java Language Specification - это самое увлекательное чтиво, но в отсутствии деталей её не упрекнёшь. |
|||
|
||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Учитывая что конструкции типа:
встречаются довольно часто, то можно грести немало лулзов отключив Short-circuit evaluation ![]() -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: нет Всего: 161 |
Спасибо!!!! То - что доктор прописал. ![]() Обидно, что я уже был на этой странце, когда разрешил свой первый вопрос. Использовал ctrl+f чтоб поискать на той же странице и ответ на второй, но, видать не правильные паттерны выбрал. ![]() Таки не на всякие прецеденты можно опираться. Я и сам уже много раз подобную конструкцию испольовал, не будучи уверенным в ее правомочности. Вот теперь точки стоят на своих местах. Я пытался выяснить мотивы, какими руководствуется участник предлагая в качестве пруфа такие странные для меня источники. добавлю тебе почвы для лулзов. Чисто 4 фан. Прошу как аргумент в гноблении делфистов не использовать(scope у этой директивы локальный, потому действует она лишь в рамках файла исходного кода, в котором она указана либо же до того фрагмента кода, где действие этой директивы отменяется). Это сообщение отредактировал(а) Zloxa - 15.2.2012, 13:29 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Дельфи компилируется в нативный код, где уже не будет ни & ни &&. Однажды скомпилированная библиотека не будет уже менять свое поведение. А вот с байткодом могла бы быть совсем другая ситуация. Хотя справедливости ради код
компилируется в аналог:
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |