Канал создан для себя, обсуждаем вопросы использования языка M и шарим всякие полезные ссылки.
На вопросы отвечаем в комментах и тут - t.me/pbi_pq_from_tank_chat
Для желающих поддержать канал - https://sponsr.ru/pq_m_buchlotnik/
Post #375
517
Читаем спецификацию 12 – поиск и безопасное извлечение (item-selection & optional access)
#АнатомияФункций - #ЧитаемСпецификацию
Чтобы добить тему access осталось рассмотреть две вещи - поиск элемента (item-selection) и что делать, когда обращаться не к чему (optional access), по этому поводу код:
Надеюсь, было полезно.
Всех благ!
@buchlotnik
#АнатомияФункций - #ЧитаемСпецификацию
Чтобы добить тему access осталось рассмотреть две вещи - поиск элемента (item-selection) и что делать, когда обращаться не к чему (optional access), по этому поводу код:
let
список = {1,2,3},
запись = [a=1,b=2,c=3],
таблица = #table({"a","b","c"},{{1,2,3},{4,5,6},{7,2,9}}),
// поиск элемента - item-selection - работает только для таблиц
поиск = таблица{[a=4]}, // [a=4,b=5,c=6] - вернулась вторая строка в виде записи, точнее - строка, у которой поле а равно 4
поиск1 = таблица{[b=2]}, //ошибка - найдено более одной строки (первая и третья)
поиск2 = таблица{[b=2,c=3]}, // [a=1,b=2,c=3] - но можно искать сразу по нескольким полям - и ошибки нет
// а если нету? - optional access
ошибка_с = список{4}, // error - элементов в перечислении недостаточно
не_ошибка_с = список{4}?, // null - элемента нет, но оно и не упало
ошибка_з = запись[d], // error - поле записи не найдено
не_ошибка_з = запись[d]?, // null - поля нет, но и ошибки нет
ошибка_т = таблица{[a=99]}, // error - строка не найдена
не_ошибка_т = таблица{[a=99]}?, // null - опциональный поиск строки
ошибка_п = запись[[a],[d]], //error - поле записи не найдено
не_ошибка_п = запись[[a],[d]]?, //[a=1,d=null] - проекция сохраняет тип записи,но поля нет - оно добавляется )))
// комбинация - когда цепочка обращений
ошибка_к = таблица{3}[d], // error - элементов недостаточно (нет 4-й строки)
ошибка_к1 = таблица{3}?[d], // error - не удается применить доступ к полям, так как слева уже null!
не_ошибка_к = таблица{3}?[d]? // null - вот так, ставим вопросы для каждого оператора
in
не_ошибка_к
Надеюсь, было полезно.
Всех благ!
@buchlotnik
- 👍 17
- 🔥 10
- ❤ 1
