美文网首页
Erlang基础

Erlang基础

作者: rainoftime | 来源:发表于2014-09-05 00:23 被阅读0次
    • 终端
    • atom
    • bool
    • turple
    • list
    • 列表解析
    • 模式匹配
    • 变量

    Erlang终端

    打开Erlang终端

    原子atom

    原子以小写字母开头,后面可以是字母、数字或@。如cat , apple_@to.

    另一种表示方法是用单引号括起来,这时原子可包含任意字符

    bool

    turple

    list

    列表可以包含多个元素,数目可变

    1> Num = [1, 2, 3, 4, 5].
    2> Score = [{math, 80}, {english, 90}].
    

    列表的各个元素类型可以不同

    3> MyList = [9, appple, {books, math, english}, [3, 4, 5]]
    

    列表操作符"|",用来分割列表的第一个元素和剩下的元素

    4> [First | Rest] = [1,2,3,4,5].
    [1,2,3,4,5]
    5> First.
    1
    6> Rest.
    [2,3,4,5]
    

    变量

    变量以大写字母开头,后面可接任意字符

    列表解析

    应用举例

    1. 数据查询

    >1 Likes=[{yao, erlang},{wang,java},{qi, php},{yang, c#},{chen,java}]
    
    %查询一:Yao喜欢什么?
    >2 [X||{P,X} <- Likes,  P=:=yao]
    
    %查询二:谁喜欢Java?
    >3 [P||{P, X} <- Likes, X=:=java]
    

    将以上的查询和表达式构造成函数,函数接受输入参数,并将上面的表达式抽象后作为函数体,这样其功能就大大增强了。

    2. 定义树及其搜索函数

    模式匹配

    模式匹配实现多态

    -module(area). 
    -export([area/1]).
    
    %正方形 
    area({square, Side}) ->
        Side*Side;
      
    %圆形 
    area({circle, Radius}) ->
        3.14*Radius*Radius;
        
    %三角形 
    area({triangle, A, B, C}) ->
        S = (A + B + C)/2, math:sqrt(S*(S-A)*(S-B)(S-C));
        
    %其他形状 area(Other) ->
        {undifined, Other}.
    
    

    相关文章

      网友评论

          本文标题:Erlang基础

          本文链接:https://www.haomeiwen.com/subject/ylmytttx.html