zoukankan      html  css  js  c++  java
  • Erlang基础2

    1. apply
    apply(Mod, Func, [Arg1, Arg2, ..., ArgN])
    等价于
    Mod:Func(Arg1, Arg2, ..., ArgN)
    区别在于,使用apply,Mod和Func是可以算出来的。
    不推荐使用apply,许多分析工具都无法得知发生了什么,编译器优化也可能不管用。

    2.元数
    函数参数的数量叫做元数。
    函数名相同,元数不同,算是不同的函数。

    3.属性
    模块属性的语法是-XXX(...).
    -module(modname). 模块声明,必须是第一个属性。必须跟文件名一样。
    -import(Mod,[Name1/Arity1, Name2/Arity2,...]) 导入了之后,就无需指定模块名了。
    -export([Name1/Arity1, Name2/Arity2, ...]). 导出了之后,模块外可以使用这些函数了。
    -compile(Options). 添加Options到编译器选项列表中。
    -vsn(Version). 指定模块版本号
    用户定义属性 -XXX(Vaule). 好像没什么不同啊。
    自定义的属性,会表现为{attributes, ...}的下属数据。
    通过module_info()函数可以返回一个属性列表,内含所有与编译模块相关的元数据。
    module_info(X)可以返回单个属性
    beam_lib:chunks("attrs.beam",[attributes]).在不载入模块代码的情况下提取属性

    4.块表达式
    使用 begin ... end 包着,就像C++的{}一样。

    5.注释 %,没有块注释

    6.动态代码载入
    每次调用函数的时候,都是最新的程序。
    更新后,旧版本的程序还在运行,但是erlang只会运行两个版本的程序。
    如果再多一个新版本,最旧的就会被清除。

    7.包含文件
    -include(Filename). 一般是包含.hrl文件。

    8.++表示列表相加,--表示列表相减
    相减的时候,如果重复出现的元素,只会移除对应的次数,而不一定是全部移除。

    9.宏
    -define(XXX,YYY).把?XXX替换成YYY。记得要使用? 
    -undef(Macro). 取消宏的定义
    -ifdef(Macro). 仅当有过定义时才执行后面的代码。
    -ifndef(Macro). 仅当Macro未定义才执行后面的代码。
    -else. 
    -elseif
    含义跟C++的差不多

    10.数字
    整数:
    K进制整数,K#Digits,最高进制数是36。
    其实更加高的也可以,只是无法输入和输出显示而已。

    11.比较
    >   大于       <  小于
    =<  小于等于   >= 大于等于
    ==  等于,只有比较整数和浮点数的时候才用
    /= 不等于
    =:= 完全相等,一般情况下应该用这个
    =/= 不完全相等

    12.以_开头的变量,声明了,不使用,编译器也不会发警告。

  • 相关阅读:
    Divide and conquer:Matrix(POJ 3685)
    Divide and conquer:Median(POJ 3579)
    Divide and conquer:K Best(POJ 3111)
    Android studio——RelativeLayout(相对布局)
    javascript简单介绍
    假期学习2/3
    Android studio——LinearLayout(线性布局)
    假期学习2/2
    Javascript正则表达式
    假期学习2/1
  • 原文地址:https://www.cnblogs.com/luluping/p/11972966.html
Copyright © 2011-2022 走看看