• Erlang 入门


    1、变量

    所有变量必须以大写字母开头。

    如:X

      Y

    2、模式匹配

    在Erlang中,=表示一个模式匹配操作, Lhs=Rhs实际是对右端求后,将结果与左端求值进行匹配。 其中如果左端为未绑定变量,则完全匹配,并赋值到左端。

    3、浮点数

    "/"永远返回浮点数, N div M 和 N rem M是用于整数除和取余数。

    如:0.32

    4、原子

    在Erlang中,原子用来表示不同非数字常量值;

    原子是以一串以小写字母开头,后跟数字字母或下划线或邮件符号的字符串;使用单引号引起来的字符串也是原子。

    如:red、cat、joe@somhost、a_lang_name、'an atom'

    5、元组(tuple)

    将若干个以逗号分割的值用一对花括号括起来,就形成了一个元组。

    如:{1,a,3}

      {3,"adsf",2}

      {person,{name,joe}}

    创建元组:

       F = {firstName, joe}

           P = {person, F}

    取元组中字段值:

           Point = {point, 10, 45}

           取值 10,45可以如下操作

           {point, X,Y} = Point.或者{_,X,Y}

    6、列表

     将若干个以逗号分割的值用一对方括号括起来,就形成了一个列表。

    如:[{apple,10},{pears,6}]

    定义列表:

    如果T是一个列表,那么[H|T]也是一列表。

    竖线符号(|)可以将列表的头和尾分隔开来,面[]表示空列表。

    也可以用[[E1,E2,...|T]这种形式向T的起始加入多个元素。并不能从后加入呢。

    常用成员函数:

    foldl:   %%    foldl(Fun, Acc0, List) -> Acc1
    > lists:foldl(fun(X, Sum) -> X + Sum end, 0, [1,2,3,4,5]).

    Fun的参数为(Elem, AccIn), 其中AccIn 以Acc0初始化,返回值累计值,作为下一次AccIn的输入值。 从左向右。

    filter: %%    filter(Pred, List1) -> List2
    > lists:filter(fun(X) -> X > 5 end, [1,2,3,4,5,6,7]).
    对成员进行过滤, 成员通过函数返回true的,构成一个列表

    append: %% append(List1, List2) -> List3

    > lists:append("abc", "def").
    追加列表,都到一个新列表 。l
    ists:append(A, B) 等同 A ++ B.

     7、字符串

    严格意义上,Erlang并没有字符串,字符串实际是一个整数列表。用(")将一串字符括起来就是一个字符串。

    如:Name = "Hello".

    [83,117,114,112,114,105,115,101].就是"Surprise"

    8、记录

    记录就是一个提供了基于名字访问成员的元组。

    记录的结构如下:

    record在原代码文件中定义
    -record(person, {name="",phone=[], address}).

    定义记录:

    在console中的定义

    rd(person,{name="",phone=[],address}).

    创建记录:

    P = #person{phone=[0,3,2,4,5], name="robert"}.

    访问字段:

    P#person.name.

     更新记录:

    P2 = P#person{name="joe"}.

    匹配:

    #person{name=Name} = P2, Name.

    Shell 命令:rr/1  读入文件中的记录

    (om@Vaio)5> rr(usr).
    [usr]

    9、进程词典

    每个进程都有一个名叫“进程字典”的本地存储。 如下的BIF用来操作它:(对原值操作时,都会返回旧值)
    get() 返回整个进程词典

    get(Key) 返回与Key关联的内容(Key 是任意erlang结构), 或者,未找到返回undefined.
    put(Key, Value) 把值和键进行关联 .返回与该值关联的旧值

    erase() 清空整个词典

    erase(Key) 清空指定键

    get_keys(Value) 取指定键

    10、守护判断

            number(X)       - X is a number
            integer(X)      - X is an integer
            float(X)        - X is a float
            atom(X)         - X is an atom
            tuple(X)        - X is a tuple
            list(X)         - X is a list
           
            length(X) == 3  - X is a list of length 3
            size(X) == 2    - X is a tuple of size 2.
           
            X > Y + Z       - X is > Y + Z
            X == Y          - X is equal to Y
            X =:= Y         - X is exactly equal to Y
                              (i.e. 1 == 1.0 succeeds but
                               1 =:= 1.0 fails)

  • 相关阅读:
    LeetCode 123. Best Time to Buy and Sell Stock III (stock problem)
    精帖转载(关于stock problem)
    LeetCode 122. Best Time to Buy and Sell Stock II (stock problem)
    LeetCode 121. Best Time to Buy and Sell Stock (stock problem)
    LeetCode 120. Triangle
    基于docker 搭建Elasticsearch5.6.4 分布式集群
    从零开始构建一个centos+jdk7+tomcat7的docker镜像文件
    Harbor实现容器镜像仓库的管理和运维
    docker中制作自己的JDK+tomcat镜像
    docker镜像制作---jdk7+tomcat7基础镜像
  • 原文地址:https://www.cnblogs.com/freebird92/p/2290046.html
Copyright © 2020-2023  润新知