<< и >> символы в Erlang - PullRequest
       25

<< и >> символы в Erlang

13 голосов
/ 01 августа 2009

Прежде всего, я новичок Эрланга здесь. Мне нужно взаимодействовать с базой данных MySQL, и я нашел erlang-mysql-driver . Я пробую это, и меня немного смущает синтаксис.

Я могу получить ряд данных из базы данных с этим (здесь для краткости значительно упрощено):

Result = mysql:fetch(P1, ["SELECT column1, column2 FROM table1 WHERE column2='", Key, "'"]),  
case Result of  
    {data, Data} ->  
        case mysql:get_result_rows(Data) of  
            [] -> not_found;  
            Res ->  
              %% Now 'Res' has the row

Итак, вот пример того, что имеет `Res ':

[[<<"value from column1">>, <<"value from column2">>]]

Я понял, что это список записей. В этом случае запрос вернул 1 строку из 2 столбцов.

Мой вопрос:
Что означают символы << и >>? И каков наилучший (рекомендованный Эрлангом) синтаксис для превращения такого списка в записи, которые я определил как:

-record(  
    my_record,  
    {   
      column1 = ""  
      ,column2 = ""  
    }  
 ).     

Ответы [ 3 ]

15 голосов
/ 03 августа 2009

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

вы можете использовать erlang: binary_to_list / 1 и erlang: list_to_binary / 1 для преобразования между двоичным файлом и строкой (списками).

Причина, по которой драйвер mysql возвращает битовые строки, , вероятно, , потому что ими гораздо быстрее манипулировать.

6 голосов
/ 01 августа 2009

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

case mysql:get_result_rows(Data) of
  [] ->
    not_found;  
  [[Col1, Col2]] ->  
    #my_record{column1 = Col1, column2 = Col2}
end
1 голос
/ 01 августа 2009

Это битовые строки.

Понимания битовых строк аналогичны спискам. Они используются для эффективной и краткой генерации битовых строк.

Понимания битовых строк записываются со следующим синтаксисом:

<< BitString || Qualifier1,...,QualifierN >>

BitString является выражением битовой строки, и каждый классификатор является либо генератором, генератором битовой строки, либо фильтром.

• Генератор записывается как:

 Pattern <- ListExpr. 

ListExpr должен быть выражением, которое оценивает список терминов.

• Генератор битовых строк записывается как:

 BitstringPattern <= BitStringExpr. 

BitStringExpr должно быть выражением, которое оценивается как цепочка битов.

• Фильтр - это выражение, которое оценивается как true или false. Переменные в генераторе образуют теневые переменные в предложении функции, окружающем понимание битовой строки.

Понимание битовой строки возвращает битовую строку, которая создается путем объединения результатов оценки BitString для каждой комбинации элементов генератора битовой строки, для которых все фильтры верны.

Пример:

1> << << (X*2) >> || 
<<X>> <= << 1,2,3 >> >>.
<<2,4,6>>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...