`
argan
  • 浏览: 129552 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Erlang 基础学习 4 Advanced Sequential Programming

阅读更多
Day 4 Advanced Sequential Programming

• BIF Build-In Functions,是在虚拟机里实现的,用erlang很难实现的功能,例如tuple_to_list,time等
• Binaries 中的整数只能在0-255
• term_to_binary,binary_to_term,list_to_binary
• 位操作
• M = <<X:3, Y:7, Z:6>><3 y:7 z:6=""><br>• X占三个bit,Y7个,Z6个<br><br>&lt;&lt;&gt;&gt;<br>&lt;&lt;E1, E2, ..., En&gt;&gt;<e1 e2 en=""><br><br>Ei = Value |<br>      Value:Size |<br>      Value/TypeSpecifierList |<br>      Value:Size/TypeSpecifierList<br><br>• binary 数据只能表达8的整数倍的bits,因为是用byte来存储的<br>•  16#abc,表示16进制的abc,相当于10#2748.<br>• 16#abc = 2748 . <br>• erlang 支持2 到36进制<br>• 例如 4#213123123 = 161499.<br><br>• {ok,Bin}=file:read_file("/path/to/the/file").  读文件<br><br>BIF apply : 相当于java中的反射调用<br>• apply(Mod, Func, [Arg1, Arg2, ..., ArgN])<br>• 相当于 直接调用 Mod:Func(Arg1, Arg2, ..., ArgN)<br>• 要尽量避免使用<br><br><b>Module Attributes</b><br><br>• predefined attributes:<br>• -module(modname).<br>• -import(Mod, [Name1/Arity1, Name2/Arity2,...]).<br>• -export([Name1/Arity1, Name2/Arity2, ...]).<br>• -compile(Options).  例如:-compile(export_all).<br>• -vsn(Virsion).没有其他含义,一般用来分析或者文档<br>• user defined attributes:<br>-module(attrs).<br>-vsn(1234).<br>-author({joe,armstrong}).<br>-purpose("example of attributes" ).<br>-export([fac/1]).<br>fac(1) -&gt; 1;<br>fac(N) -&gt; N * fac(N-1).<br><br>• 可以用Modname:module_info().来获取所有的attributes<br><br><b>Block Expressions</b><br><br>begin<br>    Expr1,<br>    ...,<br>    ExprN<br>end<br><br>• 用在只允许一个表达式,但是又需要有很多代码的地方<br>• 他的值是最后一个表达式的值<br><br><b>include</b><br><br>• include的文件都是以.hrl结尾的<br>• include(FileName). 使用相对路径或者绝对路径<br>• include_lib(Name).<br><br><b>Macro </b><br>• 定义:<br>-define(Constant, Replacement).<br>-define(Func(Var1, Var2,.., Var), Replacement).<br><br>• 使用?MacroName 引用<br>• 预定义的<br>• ?FILE当前文件<br>• ?MODULE当前module<br>• ?LINE当前行<br>• -undef(Macro).<br>• -ifdef(Macro).<br>• -ifndef(Macro).<br>• -else.<br>• -endif.<br>• <br><br><b>Numbers</b><br>• 整数,整数的大小没有限制(受内存大小限制,废话)<br>• 整数的三种写法:<br>• 1. 一般的,123,1231231,-34234<br>• 2. n进制,最大到36进制,例如 0 -65 2#010001110 -8#377 16#fe34 16#FE34 36#wow<br>• 3. $+字符,例如 $a 表示97,就是a的ascii码,$\n表示10<br>• 浮点数,例如 1.0 3.14159 -2.3e+6 23.56E-27,内部表示都是IEEE 754 64-bit<br>• 浮点数的表达区间是 −10^323 to 10^308<br><br><b>Process Dictionary</b><br><br>• 每个erlang进程都有一个私有的dictionary,可以保存一些属性<br>• @spec put(Key, Value) -&gt; OldValue.<br>• @spec get(Key) -&gt; Value.<br>• @spec get() -&gt; [{Key,Value}].<br>• @spec get_keys(Value) -&gt; [Key].<br>• @spec erase(Key) -&gt; Value.<br>• @spec erase() -&gt; [{Key,Value}].<br>• 一般不推荐使用,因为会破坏Varible not Vary的原则,如果使用,可以存放一些不会变动的内容。<br><br><br><b>其他内容</b><br>• erlang 的源代码都是使用iso-8859-1 编码的,erlang的字符串都是integer数组,因此内部没有编码问题<br>• 注释,使用 %,只有行注释,没有块注释<br>• 没有特别的boolean类型,true和false<br>• epp, Erlang preprocessor,处理macross和include,可以用compile:file(M, [’P’]). 来编译M.erl,然后把preprocess后的内容方到M.P里<br>• function引用,fun mod_name:fun_name/Arity,如果在同一个module,mod_name可以省略<br>• list操作的++ 和 --,注意--是将第一个出现的值去掉<br>• 在 erlang shell里,可以用c(Module,{}).来编译module,可以传一些参数进去<br>• andalso/orelse 和and / or的区别主要在于懒惰,能不执行的时候就不执行,and/or的表达式都是一定会执行的<br>• number &lt; atom &lt; reference &lt; fun &lt; port &lt; pid &lt; tuple &lt; list &lt; binary<br>• =:= =/= 和 == /=的区别,一个是绝对一样,另一个是差不多相等<br>• 使用下划线开头的变量,如果未被使用,编译器不会警告<br>• 可以在作pattern match的时候将match的内容命名,供后面使用,可以提高效率(避免重新生成内容),例如:<br><br>func1([{tag, {one, A}=Z1, B}=Z2|T]) -&gt;<br>   ..,.<br>   ... f(..., Z2, ...),<br>   ... g(..., Z1, ...),<br>   ...<br><br></e1></3>
分享到:
评论

相关推荐

    YOLO算法-城市电杆数据集-496张图像带标签-电杆.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    (177406840)JAVA图书管理系统毕业设计(源代码+论文).rar

    JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代

    (35734838)信号与系统实验一实验报告

    内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

    YOLO算法-椅子检测故障数据集-300张图像带标签.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    基于小程序的新冠抗原自测平台小程序源代码(java+小程序+mysql+LW).zip

    系统可以提供信息显示和相应服务,其管理新冠抗原自测平台小程序信息,查看新冠抗原自测平台小程序信息,管理新冠抗原自测平台小程序。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7 小程序开发工具:hbuildx/微信开发者工具

    YOLO算法-俯视视角草原绵羊检测数据集-4133张图像带标签-羊.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    (171674830)PYQT5+openCV项目实战:微循环仪图片、视频记录和人工对比软件源码

    内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

    新建 文本文档.docx

    新建 文本文档.docx

    hw06.zip

    hw06

    3. Kafka入门-安装与基本命令

    3. Kafka入门-安装与基本命令

    燃气管道施工资质和特种设备安装改造维修委托函.docx

    燃气管道施工资质和特种设备安装改造维修委托函.docx

    The state of AI 2024.pdf

    AI大模型研究相关报告

    lab02.zip

    lab02

    Unity视频插件AVPro的Win端2.2.3

    仅供学习使用,其他用途请购买正版资源AVPro Video Core Windows Edition 2.2.3 亲测可用的视频播放插件,能丝滑播放透明视频等.

    建设工程消防验收现场指导意见表.docx

    建设工程消防验收现场指导意见表.docx

    MVIMG_20241222_194113.jpg

    MVIMG_20241222_194113.jpg

    五相电机双闭环矢量控制模型-采用邻近四矢量SVPWM-MATLAB-Simulink仿真模型包括: (1)原理说明文档(重要):包括扇区判断、矢量作用时间计算、矢量作用顺序及切时间计算、PWM波的生成

    五相电机双闭环矢量控制模型_采用邻近四矢量SVPWM_MATLAB_Simulink仿真模型包括: (1)原理说明文档(重要):包括扇区判断、矢量作用时间计算、矢量作用顺序及切时间计算、PWM波的生成; (2)输出部分仿真波形及仿真说明文档; (3)完整版仿真模型:包括邻近四矢量SVPWM模型和完整双闭环矢量控制Simulink模型; 资料介绍过程十分详细,零基础手把手教学,资料已经写的很清楚

    YOLO算法-锡罐-牙罐-盖子打开数据集-179张图像带标签-锡罐-牙罐-盖子打开.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    java毕设项目之ssm基于JSP的乡镇自来水收费系统+jsp(完整前后端+说明文档+mysql+lw).zip

    项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7

Global site tag (gtag.js) - Google Analytics