10> 1 == 1. true

还可以比较原子值,参见。
11> abc == def. false
原子值本身按字母表次序排序(即z的值大于a),参见。
13> a < z. true
可以使用标准的布尔操作符,比如and、or、xor和not。还可以使用is_boolean()函数检查提供的值是 true 还是 false。
元组是复合的数据类型,用于存储数据项的集合。元组要放在花括号中(参见)。
14> {abc, def, {0, 1}, ghi}.
{abc,def,{0,1},ghi}
一个元组的内容不必都是相同类型的。元组的构造很特殊,其中的第一个值为原子值。在这种情况下,第一个原子值称为标签,可以使用它来标识内容或对内容进行分类(参见)。
16> { email, 'example@example.org'}.
{email,'example@example.org'}
在这里标签是 email,可以使用标签标识此元组中其余的内容。
元组对于包含定义的元素和描述各种复杂数据结构非常有用。Erlang 允许显式地设置和获取元组中的值(参见)。
17> element(3,{abc,def,ghi,jkl}).
ghi
18> setelement(3,{abc,def,ghi,jkl},mno).
{abc,def,mno,jkl}
注意,元组元素以1作为第一个值的索引中文编程,而不是像其他大多数语言中那样从 0 开始。还可以将元祖作为整体进行比较(参见)。
19> {abc,def} == {abc,def}.
true
20> {abc,def} == {abc,mno}.
false
设有一组共享数据db和两组并发进程, 一组进程只对此组数据执行 读操作, 另一组进程可对此组数据执行写操作(当然同时也可以执行读 操作),我们将前一组进程称作读者,后一组进程称作写者.为了保 证共享数据的完整性,要求: (1)多个读者的操作可以同时进行。它允许应用程序在执行一个可能不安全或敏感的操作前确定该操作是什么,以及是否是在允许执行该操作的安全上下文中执行它。为了对闪存中的数据重新放置、删除掉陈旧数据并腾出空白block来存放新数据,nand闪存需要执行被称作garbagecollection(或者merges,合并)的操作,而ssd的损耗平衡操作也主要在这个时候执行。
基本的列表如所示。
22> [1,2,3,abc,def,ghi,[4,56,789]]. [1,2,3,abc,def,ghi,[4,56,789]]
qw 表示 "quoted word" 或 "quoted by whitespace", ... perl 都会将其当成单引号内的字符串来处理 (所以, 在 wq 构建的列表中, 不能像双引号内的字符串一样使用 \n 或 $fred). (p.52) 因为 qw 算是一种引号所以不能将注释放在 qw 列表中. (p.53) 对列表进行复制时, 出来的之会被悄悄忽略掉 ... 另一种情况, 如果变量的个数多余给定的列表值, 那么那些多出来的变量将会被设成 undef.。将源串strsource开始的count个字符添加到目标串strdest后. 源串strsource的字符会覆盖目标串strdestination后面的结束符null. 如果count大于源串长度, 则会用源串的长度值替换count值. 得到的新串后面会自动加上null结束符. 与strcat函数一样, 本函数不能处理源串与目标串重叠的情况. 函数返回strdestination值.。此外,python 2 还包括了更多的程序性功能,包括能自动化地管理内存的循环检测垃圾收集器,增加了对 unicode 的支持以实现字符的标准化,并采用列表综合的方式以在现有列表基础上创建列表。
23> "Hello". "Hello"
但是,字符串实际上只是由 ASCII 字符值组成的列表。因此,上面的字符串存储为由 ASCII 字符值组成的列表(参见)。
24> [72,101,108,108,111]. "Hello"
还可以使用$Character表示法指定字符(参见)。
25> [$H,$e,$l,$l,$o]. "Hello"
列表(包括字符串,即字符的列表)支持许多操作。这是字符串与原子值之间的主要区别。原子值是静态的标识符,但是可以通过操作字符串的组成部分(各个字符)来操作字符串。例如,不能标识原子值(比如'Quick brown fox')中的各个单词,因为原子值是单一实体。但是,您可以把字符串分割为单词:["Quick","brown","fox"]。

lists 模块中提供了许多用于操作列表的函数。例如,可以使用 sort 函数对列表中的数据项进行排序。因为这些是内置的函数,所以必须指定模块和函数名(参见)。
34> lists:sort([4,5,3,2,6,1]). [1,2,3,4,5,6]
这个是python的一个内建函数,看书的时候发现了他,mark一下当我们既需要遍历索引同时需要遍历元素的时候,可以考虑使用enumerate函数,enumerate函数接受一个可遍历的对象,如列表、字符串 比如我们有一个["one","two","there"]的列表,我们需要在列表的每个元素前面加上他的编号 代码如下: i =。 、 、 、 、 begin 、end :获得容器首、尾迭代器 clear :将容器清空 empty :判断容器是否为空 size :得到容器元素个数 s1.swap s2 :将s1和s2两容器内容交换 相关数据类型(s表示容器类型) s::iterator:指向容器元素的迭代器类型 s::const_iterator:常迭代器类型 容 器 可逆容器、随机访问容器 可逆容器 s::reverse_iterator:逆向迭代器类型 s::const_reverse_iterator:逆向常迭代器类型 rbegin :指向容器尾的逆向迭代器 rend :指向容器首的逆向迭代器 随机访问容器 s[n]:获得容器s的第n个元素 * 容 器 * 顺序容器 顺序容器的接口 赋值 assign 插入函数 insert, push_front(只对list和deque), push_back 删除函数 erase,clear,pop_front(只对list和deque) ,pop_back 其他顺序容器访问函数 front,back 改变大小 resize 顺序容器 例10-4 * 顺序容器 //包含的头文件略去…… template void printcontainer const char* msg, const t& s cout msg ": "。函数的参数列表用逗号分隔,参数默认是局部变量,无法在函数之外访问,而在函数中定义的变量为全局变量,可以在函数之外访问,如:。
展示了如何在列表的开头添加新的值。
29> [1|[2,3]]. [1,2,3]
可以重复执行这种操作以构造整个列表,参见。
31> [1|[2|[3|[]]]]. [1,2,3]
在这个示例中,末尾的空列表意味着您构造了一个结构良好(合适)的列表。注意,第一项必须是一个元素,不能是列表片段。如果以其他方式执行合并,则会构造一个嵌套式列表(参见)。
30> [[1,2]|[2,3]]. [[1,2],2,3]
最后中文编程,可以使用++操作符合并列表,参见。
35> [1,2] ++ [3,4]. [1,2,3,4]
还可以从操作符左边的列表中删除右边列表中的所有元素(参见)。
36> [1,2,3,4] -- [2,4]. [1,3]
因为字符串是列表,所以这些操作也适用于字符串(参见)。
37> "hello" ++ "world".
"helloworld"
40> ("hello" -- "ello") ++ "i".
"hi"
尽管这里只简要介绍了数据类型,但是我们希望让您对基本数据类型和操作有足够的了解。
变量名以字母或者下划线开头,后面接任意长度的字母、数字或下划线。简单地说,变量不需要任何额外的符号开头,一个合法的ttl变量名是以字母开头,后面可以是以下任意字符:。简单的说变量以"$" 开后,后面跟一个vtl指示符( identifier).一个合法的vtl指示符是以字母开头,后面可以是以下任意字符:。
41> Value = 99. 99
在 Erlang 中,在对变量赋值时,是一次性将值绑定到变量。绑定变量之后,就不能改变它的值(参见)。
42> Value = 100. ** exception error: no match of right hand side value 100
这与大多数语言不一样 — 变量的定义通常意味着值是可变的。在 Erlang 中,只能赋值一次意味着:如果希望向计算某个值的结果,则必须将它赋值给新的变量(参见)。
43> Sum = Value + 100 199
只能赋值一次的好处是,在计算过程中很难意外地设置或改变变量值,这让值的识别和调试变得更容易,也让代码更为清晰,有时候更简短(因为可以简化结构)。
//正确:右值引用绑定右值考察左值和右值的区别:左值有持久的状态,而右值要么是字面常量,要么是在表达式求值过程中或者是函数返回的时候创建的临时变量。答:靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。因为变量是左值,所以我们不能将一个右值引用绑定到一个变量上,即使这个变量是一个右值引用类型也不行。

可以使用f(Varname)显式地忽略一个变量的绑定,或使用f()忽略所有变量的绑定。
为变量赋值实际上就是一种特殊的模式匹配。Erlang 中的模式匹配还会处理各个语句的执行流,以及从复合数据类型(元组、数组)中提取出值。模式匹配的基本形式是:模式 = 表达式。
表达式由数据结构、绑定的变量(即具有值的变量)、数学操作符和函数调用组成。操作的两边必须匹配(也就是说,如果模式是包含两个元素的元组,那么表达式的计算结果也必须是包含两个元素的元组)。在执行表达式时,计算表达式并将结果赋值给模式。
例如,可以使用一个模式匹配同时为两个变量赋值(参见)。
48> {A,B} = {(9+45),abc}.
{54,abc}
注意,如果模式是绑定的变量,或者模式的元素是绑定的变量,那么模式匹配的结果就会变成比较。此操作支持实现强大的选择性赋值。例如,为了从元组中获取姓名和电子邮件地址,可以使用以下模式匹配:{contact, Name, Email} = {contact, "Me", "me@example.com"}。
使用展示:1, 点击 列表模式 按钮(圈中按钮)即可切换到列表模式,win8下默认使用:。3、如果在模式规则列表中有匹配所有文件的模式,如"%",那么从列表中移除其它的模式。3、如果在模式规则列表中有匹配所有文件的模式,如”%”,那么从列表中移除其它的模式。
53> [A,B|C] = [1,2,3,4,5,6]. [1,2,3,4,5,6]
A赋值为1,B赋值为2,C赋值为列表的其余部分。
与其他语言一样,Erlang 中的函数是所有程序的基本组成部分。函数由函数名(由一个原子值定义)和圆括号中的零个或更多函数参数组成:sum(N,M) -> N+M。
如果头文件只是像c语言一样定义函数,你只需要在全局main函数所在的文件中包含进来就行,如果头文件是定义一个类(包括类中所有成员、及构造函数析构函数等),你就只需要在需要创建该类的实例的cpp文件中包含这个文件,其它的cpp文件不需要再包含了。python的os模块封装了操作系统的目录和文件操作,这些函数有的在os模块中,有的在os.path模块中。当类包含模块时,它获得的是该模块的实例方法而不是类方法,类方法存在与模块的eigenclass中. 那么如何通过包含模块来定义类方法.。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-106685-2.html
就是为了使别人活得更美好