erlang学习笔记-列表解析和断言

  1.列表解析。 1> L=[1,2,3,4] . [1,2,3,4] 4> lists:map(fun(X) -> 2*X end,L). [2,4,6,8] 5> [2*X || X <- L]. [2,4,6,8] [F(X) || X <- L] 代表由F(X)组成的列表,X取值于列表L。||右边用于匹配列表L中元素的模式,左边是一个构造器。 右边模式匹配可以像过滤器一样操作,注意大小写的区别。 6> [X || {a,X} <- [{a,1},{b,2},{c,3},{a,4},hello,"wow"]]. [1,4] 7> [X || {A,X} <- [{a,1},{b,2},{c,3},{a,4},hello,"wow"]]. [1,2,3,4] 2.列表解析快速排序算法。  
-module(lib_misc).
-export([qsort/1]).

qsort([]) -> [];
qsort([Pivot|T]) ->
qsort([X || X <- T, X < Pivot])
++ [Pivot] ++
qsort([X || X <- T,X >= Pivot]).
++中缀添加操作符 19> [1]++[2]++[3,4]. [1,2,3,4] 3.毕达哥拉斯三元组。  
pythag(N) ->
    [{A,B,C} ||
        A <- lists:seq(1,N),
        B <- lists:seq(1,N),
        C <- lists:seq(1,N),
        A+B+C =< N,
        A*A+B*B =:= C*C
    ].
lists:seq(1,N)返回一个1到N组成的列表。 4.断言。 功能:断言是一种用于强化模式匹配功能的结构。 断言序列: 用分号(;)分开的集合,只要有一个True,整个序列就为True。 用逗号(,)分开的集合,必须都为true,整个断言序列才为true。 断言序列的合法语法形式:(表格,p43) 原子true,其他常量(条件,或者绑定变量)求值为false, 断言谓词或BIF(内建函数),比较表达式,算术表达式,布尔表达式,短路布尔表达式 布尔表达式中,orelse,andalso与 or/and 区别:and/or 需要对参数都进行求值。

上一篇:
下一篇:

相关文章:

Categories: 博客记录

0 Responses so far.

Leave a Reply