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

[erlang新手] init函数参数错误导致的问题

阅读更多

gen_server的规约要求module必须实现init方法,形如:

init([State]) ->
	{ok, State}.

 

对新手来说,这里容易犯的一个错误是误以为参数不是list,于是编写代码为:

 

init( State ) ->
	{ok, State}.

 

这种错误一般很容易发现,但是对于 State 是 string 的情况则比较隐讳,因为——string也是一个list

 

今天就遇到一次这个陷阱,记录一下:

 

init( BaseUrl ) ->
	{ok, BaseUrl}.

 

上面这段代码,没有用中括号,所以传进来的不是string,而是一个 integer 数组,而后续使用代码为:

error_logger:info_msg("callback: ~p.~n",[BaseUrl]),
Url = BaseUrl++"/api/callback",

可以看出,即使打了日志也没用,因为输出的时候一切正常。

检查的方法其实也很简单,用下面的代码就可以判断是 [string] 还是 string:

 

  [X|_] = BaseUrl,
  error_logger:info_msg("is integer: ~p.~n",[is_integer(X)])

 

good luck

0
2
分享到:
评论

相关推荐

    erlang入门级练习:LeetCode OJ问题的部分erlang 源码

    我自己在新学erlang,在LeetCode OJ上找了题目练习,题目很适合新手熟悉语言,但是LeetCode OJ里面只有几门主流语言的答案,下面是已完成的erlang源代码,后续有空再做其他问题续传,题目包含:(源码开头都有题目...

    windows下安装Erlang环境

    Erlang 里面的函数是数学里面的函数:必须有返回值。 只要是函数必然有返回值,函数是一个过程,以英文的句号为函数结束符。 函数结束之前的表达式就是该函数的返回值。 所以这也是在 Erlang 里面的函数不会看到任何...

    introducing erlang

    ● 健壮性 - Erlang具有多种基本的错误检测能力,它们能够用于构建容错系统。 ● 软实时性- Erlang支持可编程的“软”实时系统,使用了递增式垃圾收集技术。 ● 热代码升级-Erlang允许程序代码在运行系统中被修改。...

    erlang编程 Introducing Erlang

    erlang入门电子书 erlang编程 Introducing Erlang,作者Simon.St.Laurent

    数据:Erlang的纯函数式和泛型编程

    数据:Erlang的纯函数式和泛型编程

    luxingwen#learning-erlang#运行时错误1

    不正确参数错误不正确参数(bad argument)错误和函数子句错误类似,因为它们都和使用不正确的参数调用函数有关。不正确函数错误导致不正确函数(bad fu

    erlang_版本24.3.4.4

    erlang 安装包

    基于ErlangC函数的Oracle性能预测和分析.pdf

    基于ErlangC函数的Oracle性能预测和分析.pdf

    erlang两种参数模块化

    NULL 博文链接:https://langzhe.iteye.com/blog/1123218

    Erlang及其应用Erlang及其应用

    Erlang及其应用Erlang及其应用Erlang及其应用

    Erlang趣学指南

    (494页带目录的高清扫描版) 这是一本讲解Erlang编程语言的入门指南,内容通俗...内容涉及模块、函数、类型、递归、错误和异常、常用数据结构、并行编程、多处理、OTP、事件处理,以及所有Erlang的重要特性和强大功能。

    vscode:用于Erlang语言服务器的Visual Studio代码扩展

    只需一次击键即可跳转到相应的init函数。 签名建议 永远不记得lists:keytake/3函数的顺序? 你不是一个人。 我们得到了你的覆盖。 编译器诊断 从编译器内联显示警告和错误。 透析仪诊断 使Dialyzer开心起来从未如此...

    erlang25.0 windows版本

    erlang25.0 windows版本

    pfun:Erlang 可移植函数

    乐趣提供跨多个节点的可移植功能对象和代码加载的库__可移植函数__的缩写概述目标是解决常规 Erlang 函数对象的以下问题:无法跨多个代码加载生存如果一个函数对象所属的模块被更新两次,持有该对象的进程就会崩溃以...

    erlang otp25 win安装包

    erlang otp25 win安装包

    erlang21.1.2

    最新版本rabbitmq需要最新版本的erlang,但是rabbitmq官网不提供erlang的最新版本下载,经过四处寻找,找到此版本,经测试rabbitmq-server3.7.12可以正常启动,如果rabbitmq-server启动时报{"init terminating in do...

    ErlangB和ErlangC计算工具(exe可执行文件+excel两个)

    ErlangB和ErlangC计算工具(exe可执行文件+excel两个) ErlangB和ErlangC计算工具(exe可执行文件+excel两个)

    erlang22最新下载包

    erlang22最新下载包 erlang22.1.tar.gz erlang22最新下载包 erlang22最新下载包

    Erlang(32,64)安装程序

    Erlang(['ə:læŋ])是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动...顺序执行的Erlang是一个及早求值, 单次赋值和动态类型的函数式编程语言

    Erlang 微分进化算法

    使用Erlang开发的微分进化算法。Erlang是一种函数式编程语言,非常适合于开发并行、分布式的应用

Global site tag (gtag.js) - Google Analytics