代码之家  ›  专栏  ›  技术社区  ›  marcc

<和>>Erlang中的符号

  •  13
  • marcc  · 技术社区  · 15 年前

    首先,我是这里的二郎新手。我需要连接一个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">>]]
    

    我的问题是:
    << >>

    -record(  
        my_record,  
        {   
          column1 = ""  
          ,column2 = ""  
        }  
     ).     
    
    3 回复  |  直到 15 年前
        1
  •  16
  •   Mazen Harake    13 年前

    请注意:结果不是位字符串 理解 据了解,他们只是 . 但是,您可以使用位字符串理解来生成位字符串序列(这在上面的生成器中进行了描述),就像列表和列表理解一样。

    您可以使用erlang:binary\u to\u list/1和erlang:list\u to\u binary/1在二进制和字符串(列表)之间进行转换。

    mysql驱动程序返回位字符串的原因是 可能

        2
  •  6
  •   Zed    15 年前

    case mysql:get_result_rows(Data) of
      [] ->
        not_found;  
      [[Col1, Col2]] ->  
        #my_record{column1 = Col1, column2 = Col2}
    end
    
        3
  •  1
  •   Robert Harvey    15 年前

    这些是 位字符串理解。

    位字符串理解类似于列表理解。它们用于高效简洁地生成位字符串。

    位字符串理解使用以下语法编写:

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

    BitString是位字符串表达式,每个限定符都是生成器、位字符串生成器或筛选器。

    生成器被写为:

     Pattern <- ListExpr. 
    

    位字符串生成器编写为:

     BitstringPattern <= BitStringExpr. 
    

    BitStringExpr 必须是计算结果为位字符串的表达式。

    筛选器是计算结果为true或false的表达式。 生成器模式中的变量在围绕位字符串理解的function子句中隐藏变量。

    BitString 对于所有过滤器均为真的位字符串生成器元素的每个组合。

    例子:

    1> << << (X*2) >> || 
    <<X>> <= << 1,2,3 >> >>.
    <<2,4,6>>