【问题标题】:Erlang create record errorErlang 创建记录错误
【发布时间】:2015-01-11 02:59:23
【问题描述】:

我正在学习 Erlang。我正在测试记录,当我尝试运行创建记录的函数时,出现此异常错误:** exception error: no function clause matching

控制台:

123> hello:helloRecords().
** exception error: no function clause matching 
                    hello:createCar("BL 45 HK","Skoda octavia","White") (hello.erl, line 21)
     in function  hello:helloRecords/0 (hello.erl, line 28)

代码:

-module(hello).
-author("Eddy").

-record(car, {evc, type, color}).
-record(person, {name, phone, addres, rc}).
-record(driver, {rc, evc}).


%% API
-export([helloIF/1, helloCase/1, helloResult/1, helloList/0, map/2, filter/2, helloListCaA/0, createCar/3, createPerson/4, createDriver/2, helloRecords/0]).


createCar(p_evc, p_type, p_color) -> _car = #car{evc = p_evc, type = p_type, color = p_color}, _car
  .
createPerson(p_name, p_phone, p_addres, p_rc) -> _person= #person{name = p_name, phone = p_phone, addres = p_addres, rc = p_rc}, _person
  .
createDriver(p_evc, p_rc) -> _driver = #driver{rc = p_rc, evc = p_evc}, _driver
  .

helloRecords() -> _car = hello:createCar("BL 45 HK", "Skoda octavia", "White"),
                  _person = hello:createPerson("Eduard B.","+421 917 111 11","Krížna XX, 811XX Bratislava1", 8XXXXXXX5),
                  _driver = hello:createDriver(_car#car.evc, _person#person.rc),
                  io:fwrite(_person#person.name),
                  io:fwrite(" Je vodič auta:"),
                  io:fwrite(_car#car.type),
                  io:fwrite(" farba:"),
                  io:fwrite(_car#car.color),io:fwrite("\n")
  .

【问题讨论】:

  • 在同一个模块中调用函数时不需要给出模块名称,因此可以直接调用createCar(...)、createPerson(...)和createDriver(...)。

标签: erlang


【解决方案1】:

createCar(p_evc, p_type, p_color) -> ... 变量的第一个字符必须为大写。此子句需要三个原子p_evc、p_type、p_color,这不是用作参数的值,因此出现no function clause matching 错误。

【讨论】:

    猜你喜欢
    • 2014-06-06
    • 2018-02-09
    • 1970-01-01
    • 2016-02-03
    • 2022-11-28
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 2019-04-14
    相关资源
    最近更新 更多