zoukankan      html  css  js  c++  java
  • LYSE-起步

    数字

    四则运算

    1> 2 + 15.
    17
    2> 49 * 100.
    4900
    3> 1892 - 1472.
    420
    4> 5 / 2.
    2.5
    5> 5 div 2.
    2
    6> 5 rem 2.
    1

    进制

    10> 2#101010.
    42
    11> 8#0677.
    447
    12> 16#AE.
    174

    变量

    值不可改变

    首字母必须大写

    _或_开头的变量,相当于哑元,可以用来接值,但不会保存数据。

    原子

    小写字母开头的标识符,或''包含的数据是原子数据。

    原子数据放在原子表中,不会被垃圾收集。原子数据增加时,会持续消耗内存直至用尽内存或声明了1048577个原子数据。因此不要动态生成原子数据。

    关键字不能用作原子数据。

    布尔代数与比较符

    布尔

    1> true and false.
    false
    2> false or true.
    true
    3> true xor false.
    true
    4> not false.
    true
    5> not (true and true).
    false

    and/or会对两端表达式求值,要使用短路逻辑,应该使用andalso/orelse。

    判断相等

    6> 5 =:= 5.
    true
    7> 1 =:= 0.
    false
    8> 1 =/= 0.
    true
    9> 5 =:= 5.0.
    false
    10> 5 == 5.0.
    true
    11> 5 /= 5.0.
    false

    判断不等

    12> 1 < 2.
    true
    13> 1 < 1.
    false
    14> 1 >= 1.
    true
    15> 1 =< 1.
    true

    与C++不同,1与true并不相等,0与false也不相等。

    实际上,不同类型有下面的比较关系

    number < atom < reference < fun < port < pid < tuple < list < bit string

    元组

    格式:{元素1,元素2,……,元素N}

    1> X = 10, Y = 4.
    4
    2> Point = {X,Y}.
    {10,4}
    3> Point = {4,5}.
    {4,5}
    4> {X,Y} = Point.
    {4,5}
    5> X.
    4
    6> {X,_} = Point.
    {4,5}
    7> {_,_} = {4,5}.
    {4,5}
    8> {_,_} = {4,5,6}.
    ** exception error: no match of right hand side value {4,5,6}
    10> PreciseTemperature = {celsius, 23.213}.
    {celsius,23.213}
    11> {kelvin, T} = PreciseTemperature.
    ** exception error: no match of right hand side value {celsius,23.213}
    12> {point, {X,Y}}.
    {point,{4,5}}

    列表

    格式:[元素1,元素2,……,元素N]

    列表可以放任意数据

    1> [1, 2, 3, {numbers,[4,5,6]}, 5.34, atom].
    [1,2,3,{numbers,[4,5,6]},5.34,atom]

    如果元素全是可打印的ASCII值,那么显示的结果有点尴尬

    2> [97, 98, 99].
    "abc"

    “并”、“差”操作

    5> [1,2,3] ++ [4,5].
    [1,2,3,4,5]
    6> [1,2,3,4,5] -- [1,2,3].
    [4,5]
    7> [2,4,2] -- [2,4].
    [2]
    8> [2,4,2] -- [2,4,2].
    []

    “并”、“差”操作是右结合的

    9> [1,2,3] -- [1,2] -- [3].
    [3]
    10> [1,2,3] -- [1,2] -- [2].
    [2,3]

    使用BIFs(内建函数)来获取列表数据

    11> hd([1,2,3,4]).
    1
    12> tl([1,2,3,4]).
    [2,3,4]

    以上两个函数取数据时,使用这个匹配模式:[头|尾]。

    "|"称为构造操作符。

    13> List = [2,3,4].
    [2,3,4]
    14> NewList = [1|List].
    [1,2,3,4]
    15> [Head|Tail] = NewList.
    [1,2,3,4]
    16> Head.
    1
    17> Tail.
    [2,3,4]
    18> [NewHead|NewTail] = Tail.
    [2,3,4]
    19> NewHead.
    2

    适当列表&非适当列表

    适当列表的最后一个单元是一个空列表。

    当以“[2]”这样的形式来声明列表时,列表被构造成一个适当的列表。

    而以"[1|2]”方式声明时,将构造一个非适当列表。

    非适当列表用来匹配[head|tail]没有问题,但无法用于内建函数。

    因此“[1|2]”应声明成“[1|[2]]”。

    列表推导式

    列表推导式格式:列表 = [表达式 || 生成表达式1,生成表达式2,……,生成表达式N,条件1,条件2,……条件M]

    生成表达式格式:样式 <- 列表

    3> RestaurantMenu = [{steak, 5.99}, {beer, 3.99}, {poutine, 3.50}, {kitten, 20.99}, {water, 0.00}].
    [{steak,5.99},
    {beer,3.99},
    {poutine,3.5},
    {kitten,20.99},
    {water,0.0}]
    4> [{Item, Price*1.07} || {Item, Price} <- RestaurantMenu, Price >= 3, Price =< 10].
    [{steak,6.409300000000001},{beer,4.2693},{poutine,3.745}]
    5> [X+Y || X <- [1,2], Y <- [2,3]].
    [3,4,4,5]

    位操作

    二进制数据放在“<<”和“>>”中间。

    二进制数据的格式:

      值

      值:大小

      值/类型声明列表

      值:大小/类型声明列表

    类型声明列表包含的元素:

      类型。可选值: integer | float | binary | bytes | bitstring | bits | utf8 | utf16 | utf32

      符号。可选值:signed | unsigned

      端。可选值:big | little | native
      单位。格式:unit:integer

      元素之间用“-”连接

    3> Pixels = <<213,45,132,64,76,32,76,0,0,234,32,15>>.
    <<213,45,132,64,76,32,76,0,0,234,32,15>>
    4> <<Pix1,Pix2,Pix3,Pix4>> = Pixels.
    ** exception error: no match of right hand side value <<213,45,132,64,76,32,76,
    0,0,234,32,15>>
    5> <<Pix1:24, Pix2:24, Pix3:24, Pix4:24>> = Pixels.
    <<213,45,132,64,76,32,76,0,0,234,32,15>>

    只想匹配开头的数据时,可以使用语法糖

    8> <<R:8, Rest/binary>> = Pixels.
    <<213,45,132,64,76,32,76,0,0,234,32,15>>
    9> R.
    213

    二进制推导式

    二进制生成列表

    1> [ X || <<X>> <= <<1,2,3,4,5>>, X rem 2 == 0].    
    [2,4]

    列表生成二进制

    4> << <<R:8, G:8, B:8>> ||  {R,G,B} <- RGB >>.
    <<213,45,132,64,76,32,76,0,0,234,32,15>>
  • 相关阅读:
    [C++]多源最短路径(带权有向图):【Floyd算法(动态规划法)】 VS n*Dijkstra算法(贪心算法)
    [C++]Yellow Cards
    [C++]哈夫曼树(最优满二叉树) / 哈夫曼编码(贪心算法)
    考研部分复习策略记录
    [C++/JavaScript]数据结构:栈和数列>案例引入(数制的转换)
    [C++]数据结构:线性表之(单)链表
    [C++]数据结构:线性表之顺序表
    自然语言处理(NLP)之个人小结
    NLP之TF-IDF与BM25原理探究
    [Python]Excel编程示例教程(openpyxl)
  • 原文地址:https://www.cnblogs.com/sqxy110/p/4994710.html
Copyright © 2011-2022 走看看