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 Разраб . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.