Перейти к содержанию

LET

Оператор LET может быть использован для присвоения произвольного значения переменной. Затем переменная вводится в область видимости, в которой находится оператор LET.

Синтаксис

LET variableName = expression

expression может быть простым выражением или подзапросом.

Для разрешенных имен переменных Синтаксис AQL.

Использование

Переменные в AQL неизменяемы, что означает, что они не могут быть переназначены:

1
2
3
4
5
LET a = [1, 2, 3]  // initial assignment

a = PUSH(a, 4)     // syntax error, unexpected identifier
LET a = PUSH(a, 4) // parsing error, variable 'a' is assigned multiple times
LET b = PUSH(a, 4) // allowed, result: [1, 2, 3, 4]

Операторы LET в основном используются для объявления сложных вычислений и для того, чтобы избежать повторных вычислений одного и того же значения в нескольких частях запроса.

1
2
3
4
5
6
7
FOR u IN users
  LET numRecommendations = LENGTH(u.recommendations)
  RETURN {
    "user" : u,
    "numRecommendations" : numRecommendations,
    "isPowerUser" : numRecommendations >= 10
  }

В приведенном выше примере вычисление количества рекомендаций разложено на части с помощью оператора LET, что позволяет избежать двойного вычисления значения в операторе RETURN.

Еще один случай использования LET - объявление сложного вычисления в подзапросе, что делает весь запрос более читабельным.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
FOR u IN users
  LET friends = (
  FOR f IN friends
    FILTER u.id == f.userId
    RETURN f
  )
  LET memberships = (
  FOR m IN memberships
    FILTER u.id == m.userId
      RETURN m
  )
  RETURN {
    "user" : u,
    "friends" : friends,
    "numFriends" : LENGTH(friends),
    "memberShips" : memberships
  }

Комментарии