Команда 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 или nil (т.е. «истинное» значение), а также конечную команду «else», которая будет выполнена, если все условные выражения являются false или nil.
Вы можете вызвать branch в инфиксной форме для первого теста. (Смотрите второй пример для иллюстрации.)
r.branch(test1, val1, test2, val2, elseval)
Эквивалент оператора Ruby:
if test1
val1
elsif test2
val2
else
elseval
end
Пример: Проверка значения 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'].add(' is a superhero'),
r.row['victories'] > 10,
r.row['name'].add(' is a hero'),
r.row['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"
]
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/ruby/branch/