《Erlang程序设计》学习笔记-第3章 顺序型编程

本文深入探讨了Erlang编程语言中列表解析和断言的使用方法,包括自定义循环结构、导入函数、列表解析常见形式、断言功能及其常见用法。同时介绍了如何在列表操作和函数定义中高效利用这些特性。
摘自:http://hi.baidu.com/zai215837829/blog/item/2f4fc2c770c882019d163d80.html

1. 自定义的for循环结构:
    for(Max, Max, F) -> [F(Max)];
for(I, Max, F) -> [F(I) | for(I+1, Max)].


2. -import(lists, [map/2, sum/1]. 导入lists模块中的map/2和sum/1函数,这样再应用时可以直接写map(...)和sum(...)了。

3. 列表解析: [F(X) || X <- L]。例子:
[ 2*X || X <- L] %% 将列表L的元素*2,生成新的列表。
[{Name, 2*Number} || {Name, Number} <- Buy]
[shop:cost(A)*B || {A, B} <- Buy]
map(F, L) -> [F(X) || X <- L].

4. 列表解析的常见形式:[X || Qualifier1, Qualifier2, ...]
X是一个任意的表达式,每一个限定词可以是一个生成器,也可以是一个过滤器。
生成器: Pattern <- ListExpr, ListExpr必须是一个对列表项求值的表达式。
过滤器: 可以是一个返回true或false的函数,也可以是一个布尔表达式。
其实,生成器的Pattern也可以起到过滤器的作用,如:
[X || {a, X} <- [{a, 1}, {b, 2}, {c, 3}, {a, 4}, hello, "wow"]]. %% 返回值:[1,4]
相当于[X || {A, X} <- [{a, 1}, {b, 2}, {c, 3}, {a, 4}, hello, "wow"], A=:=a].
map18. A++B,是将列表B附加到列表A上生成一个新的列表,但效率不高。
A--B,是从列表A中删除与B中元素相同的所有元素,如果元素X在B中出现K次,则会从A中依次删除K个元素X。

5. 断言(guard)是一种用于强化模式匹配功能的结构。


6. 在函数定义的头部使用断言时,必须以关键字when开头。如:
    max(X, Y) when X > Y -> X;
man(X, Y) -> Y.


7. 可以在任何允许使用表达式的地方使用断言,当断言用于表达式时,它要么返回原子true(认为是求值成功),要么返回原子false(求值失败)。


8. 断言序列:
一组用逗号分隔的断言表达式表示的是and关系,即所以的断言为true,整个断言序列才为true。
一组用分号分隔的断言表达式表示的是or关系

9. 断言谓词:
is_atom(X)
is_binary(X)
is_constant(X)
is_float(X)
is_function(X)
is_function(X, N)
is_integer(X)
is_list(X)
is_number(X)
is_pid(X)
is_port(X)
is_reference(X)
is_tuple(X)
is_record(X, Tag)
is_record(X, Tag, N)

10. 断言BIF
abs(X) X的绝对值
element(N, X) 元组X的第N个元素
float(X) 将数字N转换为浮点数
hd(X) 列表X的头部
length(X) 列表X的长度
node() 当前节点
node(X) 进程X的节点
round(X) 将数字X转换为整数(四舍五入)
self() 当前进程的标识符
size(X) X的大小,X为元组或二进制数据
trunc(X) 将数字X转换为整数(截取)
tl(X) 列表X的尾部

11. 尽量在一个列表的头部进行操作,尽量避免用到List++[H]这样的代码,除非List很短。通常要以自然顺序创建列表。规则如下:
(1)总是在列表头部添加元素。
(2)从一个输入列表的头部提取元素,然后把它们加在一个输出列表的头部。输出列表中的结果与输入列表的顺序相反。
(3)如果顺序至关重要,那么调用经过高度优化的函数list:reverse/1。 (这个函数是在erlang虚拟机中实现的,经过了高度的优化)。
(4)避免违反这些原则。
内容概要:本文系统阐述了企业新闻发稿在生成式引擎优化(GEO)时代下的全渠道策略与效果评估体系,涵盖当前企业传播面临的预算、资源、内容与效果评估四大挑战,并深入分析2025年新闻发稿行业五大趋势,包括AI驱动的智能化转、精准化传播、首发内容价值提升、内容资产化及数据可视化。文重点解析央媒、地方官媒、综合门户和自媒体四类媒体资源的特性、传播优势与发稿策略,提出基于内容适配性、时间节奏、话题设计的策略制定方法,并构建涵盖品牌价值、销售转化与GEO优化的多维评估框架。此外,结合“传声港”工具实操指南,提供AI智能投放、效果监测、自媒体管理与舆情应对的全流程解决方案,并针对科技、消费、B2B、区域品牌四大行业推出定制化发稿方案。; 适合人群:企业市场/公关负责人、品牌传播管理者、数字营销从业者及中小企业决策者,具备一定媒体传播经验并希望提升发稿效率与ROI的专业人士。; 使用场景及目标:①制定科学的新闻发稿策略,实现从“流量思维”向“价值思维”转;②构建央媒定调、门户扩散、自媒体互动的立体化传播矩阵;③利用AI工具实现精准投放与GEO优化,提升品牌在AI搜索中的权威性与可见性;④通过数据驱动评估体系量化品牌影响力与销售转化效果。; 阅读建议:建议结合文中提供的实操清单、案例分析与工具指南进行系统学习,重点关注媒体适配性策略与GEO评估指标,在实际发稿中分阶段试点“AI+全渠道”组合策略,并定期复盘优化,以实现品牌传播的长期复利效应。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值