zoukankan      html  css  js  c++  java
  • erlang学习1

     

    q().----退出erlang's console

    f().----撤销遍历绑定

    pwd().--打印当前目录

    cd("f:/sinpo").--进入指定目录

    c(geometry).--编译文件

    geometry:sum(L).--列表求和

    Z = fun(X) -> 2 * X end. --匿名函数

    %% erl中实现for循环
    for(Max,Max,F) -> [F(Max)];
    for(I,Max,F) ->[F(I)|for(I+1,Max,F)].

    %%map定义
    map(_,[]) -> [];
    map(F,[H|T]) -> [F(H)|map(F,T)].

    %%断言guard,是强化模式匹配的一种结构

    max(X,Y) when X > Y -> X;
    max(X,Y) -> Y.

    %%列表record
    record定义: (record定义在.erl源码或.hrl文件中)
         -record(todo, {status=reminder,who=joe,text}).
    rr("records.hrl"). ----console控制台导入.hrl record

    X1 = #todo{status=urgent,text = "this is a test!"}. ---record创建及更新赋值

    X2 = X1#todo{status = done}. ---创建X1副本,并改变status字段的值为原子:done

    #todo{who = W,text = Txt} = X1. ---模式匹配获得record中字段

    X1#todo.text ---点语法获得单个字段

    rf().---告诉shell,注释掉记录定义(记录就是元组,只不过使命名元组中不同元素的语法简化而已)

    %%case表达式(Guard1->为可选断言)

    case Expression of
         Pattern1 [when Guard1] -> Expr_seq1;
         Pattern1 [when Guard2] -> Expr_seq2;
         ...
    end

    例子:filter函数定义

    filter(P,[H|T]) ->
        case P(H) of
             true -> [H|filter(P,T)];
             false -> filter(P,T)
        end;
    filter(P,[]) ->
        [].

    %%if表达式(Guard1->断言必须)
    根据断言验证成功与否决定执行分支
    if
       Guard1 ->
           Expr_seq1;
       Guard2 ->
           Expr_seq2;
       ...
    end

    注:通常if表达式的最后一个断言为true,可保证表达式最后一个分支被求值。

  • 相关阅读:
    error: gnu/stubs32.h: 没有那个文件或目录
    vim配色方案
    Linux文件合并、去除重复
    Debian网络安装中的驱动问题
    汽油、柴油标号
    Debian SSH登录慢的解决办法
    Debian下的时间和时区问题
    解决vim、gvim在windows下中文乱码
    使用本地Debian ISO镜像作为网络安装源
    Debian如何永久添加静态路由
  • 原文地址:https://www.cnblogs.com/sinpo/p/2243978.html
Copyright © 2011-2022 走看看