Spec-Zone.ru › RethinkDB java

Команда 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 или null (т.е. «истинностных» значений), а также финальную команду «else», которая выполняется, если все условные выражения являются false или null.

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

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

Эквивалентно следующему оператору Java:

if (test1) {
    return val1;
} else if (test2) {
    return val2;
} else {
    return elseval;
}

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

int x = 10;
r.branch(r.expr(x).gt(5), "big", "small").run(conn);

// Result:
"big"

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

int x = 10;
r.expr(x).gt(5).branch("big", "small").run(conn);

// Result:
"big"

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

r.table("marvel").map(hero -> r.branch(
    hero.g("victories").gt(100),
    hero.g("name").add(" is a superhero"),
    hero.g("victories").gt(10),
    hero.g("name").add(" is a hero"),
    hero.g("name").add(" 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/java/branch/

Spec-Zone.ru

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