Spec-Zone.ru › RethinkDB python

Команда ReQL: branch

Синтаксис команды

r.branch(test, true_action[, test2, test2_action, ...], false_action) → any
test.branch(true_action[, test2, test2_action, ...], false_action) → any

Описание

Выполняет ветвящееся условное условие, эквивалентное if-then-else.

Команда branch принимает 2n+1 аргументов: пары условных выражений и команд, которые будут выполнены, если условные выражения возвращают любое значение, кроме False или None (т.е., «истинное» значение), с окончательной командой «иначе», которая будет выполнена, если все условные выражения возвращают False или None.

Вы можете вызвать branch в инфиксной форме для первого теста. (См. второй пример для иллюстрации.)

r.branch(test1, val1, test2, val2, elseval)

Эквивалентно инструкции Python:

if test1:
    return val1
elif test2:
    return val2
else:
    return elseval

Пример: Проверить значение x.

x = 10
r.branch((x > 5), 'big', 'small').run(conn)

> "big"

Пример: Как выше, в инфиксной форме.

x = 10
r.expr(x > 5).branch('big', 'small').run(conn)

> "big"

Пример: Классифицировать героев по количеству побед.

r.table('marvel').map(
    r.branch(
        r.row['victories'] > 100,
        r.row['name'] + ' is a superhero',
        r.row['victories'] > 10,
        r.row['name'] + ' is a hero',
        r.row['name'] + ' is very nice'
    )
).run(conn)

Если документы в таблице marvel:

[
    { "name": "Iron Man", "victories": 214 },
    { "name": "Jubilee", "victories": 49 },
    { "name": "Slava", "victories": 5 }
]

Результаты будут:

[
    "Iron Man is a superhero",
    "Jubilee is a hero",
    "Slava is very nice"
]

Связанные команды

  • do

© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/python/branch/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API