erl命令行运行问题
最近在使用idea进行一些开发,之前都是在ide里写代码,运行均是手动在shell中,在idea里尝试直接运行,实际上相当于在命令行中使用-run 或-s ,却发现有2个问题。
1、使用io:format输出时,和shell中的结果不一样。
-s:
ddd["1"]
shell:
ddd1
ddd["1"]
shell:
ddd1
2、使用递归函数时,报参数匹配错误
{badarith,[{tc,a,1,[{file,"f:/qinyuxi/tset1/src/tc.erl"},{line,13}]}
写了一个测试程序检查
-module(tc).
-export([a/1]).
a(10) ->
10;
a(A) ->
io:format("ddd~p~n",[A]),
a(A+1).
-export([a/1]).
a(10) ->
10;
a(A) ->
io:format("ddd~p~n",[A]),
a(A+1).
该程序在shell中运行正常,使用erl -run tc a 1则报上面的错。
本来以为是2个独立的问题,经过高任兄的分析,发现2个问题是有关联的,仔细看问题1,其实可以发现,传入的参数在-run模式下,其实是["1"],而不是1,所以该错误就很明显了,erlang虽然是弱类型语言,但在模式匹配中,list是无法和integer进行比较的。
如何让-run带入的参数和shell中一样呢?这个留待以后研究