Лютейщий баг - приоритет операторов
От: Shmj Ниоткуда  
Дата: 01.12.22 20:53
Оценка: +1 -3 :)))
lastCursor.ItemLink?.Offset ?? 0 + index




Т.е. когда ItemLink is null — все выдаст правильно = 0 + index
А когда не null, то выдаст просто Offset, вместо ожидаемых Offset + index

Вот как такое находить?
=сначала спроси у GPT=
Re: Лютейщий баг - приоритет операторов
От: Буравчик Россия  
Дата: 01.12.22 22:12
Оценка: 1 (1) +2
Здравствуйте, Shmj, Вы писали:

S>
S>lastCursor.ItemLink?.Offset ?? 0 + index
S>


Я не пишу на C#, но заглянул в доку
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/

В соответствии с приоритетом операторов выражение парсится так
( (lastCursor.ItemLink)?.Offset ) ?? (0 + index)


S> Т.е. когда ItemLink is null — все выдаст правильно = 0 + index

S>А когда не null, то выдаст просто Offset, вместо ожидаемых Offset + index

И в обоих случая дает правильное значение
Best regards, Буравчик
Re: Лютейщий баг - приоритет операторов
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 01.12.22 22:18
Оценка: -3 :)
Здравствуйте, Shmj, Вы писали:


S>Вот как такое находить?


Послать в жопу шарп с этими закорючками и перейти на плюсики?

S>
S>lastCursor.ItemLink?.Offset ?? 0 + index
S>


И эти люди запрещают мне ковыряться в носу?А потом они говорят, что C++ сложный и полон багов
Маньяк Робокряк колесит по городу
Отредактировано 01.12.2022 22:21 Marty . Предыдущая версия .
Re: Лютейщий баг - приоритет операторов
От: vaa  
Дата: 01.12.22 23:56
Оценка:
Здравствуйте, Shmj, Вы писали:

S>
S>lastCursor.ItemLink?.Offset ?? 0 + index
S>


S>


S>Т.е. когда ItemLink is null — все выдаст правильно = 0 + index

S>А когда не null, то выдаст просто Offset, вместо ожидаемых Offset + index

S>Вот как такое находить?


Тестировать св-ва функций https://fscheck.github.io/FsCheck/

Операторы объединения со значением NULL являются правоассоциативными.

Вообще то, как работают операторы надо знать.
Или их не использовать(писать на F#):
((=)    1
    ((/)     2
        ((+) 1 1)))


PS
var x = lastCursor.ItemLink?.Offset?.GetValueOrDefault(0) + index;


PPS
меня иногда клинит даже значение "?." (в нормальных языках типа js / cl null это также false — удобно)
синтаксис зло. функции добро.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Отредактировано 02.12.2022 1:20 Разраб . Предыдущая версия . Еще …
Отредактировано 02.12.2022 1:17 Разраб . Предыдущая версия .
Отредактировано 02.12.2022 1:16 Разраб . Предыдущая версия .
Отредактировано 02.12.2022 0:23 Разраб . Предыдущая версия .
Отредактировано 02.12.2022 0:08 Разраб . Предыдущая версия .
Re: Лютейщий баг - приоритет операторов
От: Sharowarsheg  
Дата: 02.12.22 01:21
Оценка: +3 :)
Здравствуйте, Shmj, Вы писали:

S>Вот как такое находить?


Такого нужно не писать. Больше скобочек — чище жопа жизнь спокойнее.
Re[2]: Лютейщий баг - приоритет операторов
От: _FRED_ Черногория
Дата: 02.12.22 16:31
Оценка:
Здравствуйте, Marty, Вы писали:

S>>Вот как такое находить?

M>Послать в жопу шарп с этими закорючками и перейти на плюсики?

M>И эти люди запрещают мне ковыряться в носу?А потом они говорят, что C++ сложный и полон багов

Много ли ты напрограмируешь на плюсах (тем паче современных плюсах), не заглядывая в документацию?

Да даже что напрограммируешь! просто прочитаешь кода? Не-а, гооораздо меньше
Help will always be given at Hogwarts to those who ask for it.
Re[2]: Лютейщий баг - приоритет операторов
От: kov_serg Россия  
Дата: 02.12.22 16:39
Оценка:
Здравствуйте, Marty, Вы писали:

S>>Вот как такое находить?


M>Послать в жопу шарп с этими закорючками и перейти на плюсики?

Видимо вы swift не видели вот где любители закорючек.
Re[3]: Лютейщий баг - приоритет операторов
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 02.12.22 17:16
Оценка:
Здравствуйте, _FRED_, Вы писали:

M>>И эти люди запрещают мне ковыряться в носу?А потом они говорят, что C++ сложный и полон багов


_FR>Много ли ты напрограмируешь на плюсах (тем паче современных плюсах), не заглядывая в документацию?


Ну, я пишу на 0x03их плюсах, я бы сказал, в основном, с элементами 14го и иногда 17го стандарта. В документацию конечно заглядываю, но редко. Могу днями-неделями не заглядывать. Как операторы работают — знаю, тут в документацию лазать вообще не нужно


_FR>Да даже что напрограммируешь! просто прочитаешь кода? Не-а, гооораздо меньше


Смотря какой код. Но вообще, когда чужой код читаешь, даже реже заглядывать приходится, чем когда свой пишешь
Маньяк Робокряк колесит по городу
Re[3]: Лютейщий баг - приоритет операторов
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 02.12.22 17:16
Оценка:
Здравствуйте, kov_serg, Вы писали:

S>>>Вот как такое находить?


M>>Послать в жопу шарп с этими закорючками и перейти на плюсики?

_>Видимо вы swift не видели вот где любители закорючек.

Я в котлине на элвисов уже насмотрелся, мне хватило

Вообще, плюсы начинают мне казаться весьма простым языком, по сравнению с этими новомодными хренями
Маньяк Робокряк колесит по городу
Отредактировано 02.12.2022 17:17 Marty . Предыдущая версия .
Re: Лютейщий баг - приоритет операторов
От: rosencrantz США  
Дата: 02.12.22 21:17
Оценка: -1
Здравствуйте, Shmj, Вы писали:

S>Вот как такое находить?


Тесты писать. Вы же не адепт доказательного программирования
Автор: Эйнсток Файр
Дата: 29.11.22
?
Отредактировано 02.12.2022 21:18 rosencrantz . Предыдущая версия .
Re: Лютейщий баг - приоритет операторов
От: Pzz Россия https://github.com/alexpevzner
Дата: 02.12.22 22:39
Оценка: +2
Здравствуйте, Shmj, Вы писали:

S>Вот как такое находить?


Скобки использовать.
Re[4]: Лютейщий баг - приоритет операторов
От: _FRED_ Черногория
Дата: 05.12.22 22:39
Оценка:
Здравствуйте, Marty, Вы писали:

M>>>И эти люди запрещают мне ковыряться в носу?А потом они говорят, что C++ сложный и полон багов

_FR>>Много ли ты напрограмируешь на плюсах (тем паче современных плюсах), не заглядывая в документацию?
M>Ну, я пишу на 0x03их плюсах, я бы сказал, в основном, с элементами 14го и иногда 17го стандарта. В документацию конечно заглядываю, но редко. Могу днями-неделями не заглядывать. Как операторы работают — знаю, тут в документацию лазать вообще не нужно

Похоже, что просто у тебя стиль такой, не в документацию заглядывать, а как-то иначе справляться // А можно в if объявить переменную и сразу её проверить?

_FR>>Да даже что напрограммируешь! просто прочитаешь кода? Не-а, гооораздо меньше

M>Смотря какой код. Но вообще, когда чужой код читаешь, даже реже заглядывать приходится, чем когда свой пишешь

Тут, конечно, смотря что читать, да.
Help will always be given at Hogwarts to those who ask for it.
Re[5]: Лютейщий баг - приоритет операторов
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 05.12.22 23:59
Оценка: +1
Здравствуйте, _FRED_, Вы писали:

_FR>Похоже, что просто у тебя стиль такой, не в документацию заглядывать, а как-то иначе справляться // А можно в if объявить переменную и сразу её проверить?


Какой есть. Я же сказал, что пишу на старых плюсиках. Новыми интересуюсь понемногу, да. На форумах спрашиваю, когда хочется чего-то хз чего
Маньяк Робокряк колесит по городу
Re[2]: Лютейщий баг - приоритет операторов
От: Shmj Ниоткуда  
Дата: 06.12.22 08:38
Оценка: +1
Здравствуйте, Pzz, Вы писали:

Pzz>Скобки использовать.


Нужно написать в JetBrains, чтобы добавили виртуальные скобки.
=сначала спроси у GPT=
Re[3]: Лютейщий баг - приоритет операторов
От: Sharowarsheg  
Дата: 06.12.22 10:00
Оценка:
Здравствуйте, Shmj, Вы писали:

Pzz>>Скобки использовать.


S>Нужно написать в JetBrains, чтобы добавили виртуальные скобки.


Нужно написать всем, кто делает все языки, чтобы запретили приоритет операторов. Везде, где нужен приоритет, херак — и ошибка компилятора "Требуются скобки".
Re[3]: Лютейщий баг - приоритет операторов
От: Mr.Delphist  
Дата: 06.12.22 11:16
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, Pzz, Вы писали:


Pzz>>Скобки использовать.


S>Нужно написать в JetBrains, чтобы добавили виртуальные скобки.


Кстати, хорошая фича должна быть, двумя руками за. Сам предпочитаю redundant parentheses
Re[4]: Лютейщий баг - приоритет операторов
От: Sinclair Россия https://github.com/evilguest/
Дата: 07.12.22 08:06
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:
MD>Кстати, хорошая фича должна быть, двумя руками за. Сам предпочитаю redundant parentheses
Вот я сначала проголосовал "за", а потом что-то задумался. Если выражение простое, то виртуальные скобки будут его только замусоривать: a = b*c + d*e. Если выражение сложное, с неочевидным приоритетом, то лучше скобки ставить реально, а не виртуально.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: Лютейщий баг - приоритет операторов
От: _FRED_ Черногория
Дата: 09.12.22 22:54
Оценка:
Здравствуйте, Sinclair, Вы писали:

MD>>Кстати, хорошая фича должна быть, двумя руками за. Сам предпочитаю redundant parentheses

S>Вот я сначала проголосовал "за", а потом что-то задумался. Если выражение простое, то виртуальные скобки будут его только замусоривать: a = b*c + d*e.

Угу, но "простота выражения" определяется, в том числе, знанием/пониманием приоритетов операторов (речь же здесь не только и даже не столько про арифметику, знакомую каждому с начальной школы), а это уже субъективно (как, к сожелению, показывает практика).
Help will always be given at Hogwarts to those who ask for it.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.