Erlang案例陈述

2024-02-22

我有以下 Erlang 代码,当我尝试编译它时,它给出如下警告,但这是有道理的。函数需要两个参数,但我需要模式匹配“其他所有内容”而不是 x、y 或 z。

-module(crop).
-export([fall_velocity/2]).

fall_velocity(P, D) when D >= 0 ->
case P of
x -> math:sqrt(2 * 9.8 * D);
y -> math:sqrt(2 * 1.6 * D);
z -> math:sqrt(2 * 3.71 * D);
(_)-> io:format("no match:~p~n")
end.

crop.erl:9: Warning: wrong number of arguments in format call. 

我在 io:format 之后尝试了一个匿名变量,但仍然不满意。


在您使用 ~p 的格式中。它的意思是——打印值。因此,您必须指定要打印的值。

case 的最后一行必须是

_ -> io:format("no match ~p~n",[P])

此外,io:format 返回“ok”。因此,如果 P 不是 x y 或 z,您的函数将返回“ok”而不是数值。我建议返回标记值以区分正确和错误返回。有点儿

fall_velocity(P, D) when D >= 0 ->
case P of
x -> {ok,math:sqrt(2 * 9.8 * D)};
y -> {ok,math:sqrt(2 * 1.6 * D)};
z -> {ok,math:sqrt(2 * 3.71 * D)};
Otherwise-> io:format("no match:~p~n",[Otherwise]),
            {error, "coordinate is not x y or z"}
end.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Erlang案例陈述 的相关文章

  • Erlang编译器错误

    我有以下代码 loop Data gt receive Key Value gt Key Value Data Key gt member Key Data 14 loop Data stop gt io format server sto
  • Erlang 中的 Apple 推送通知(或 Ruby 中的改进?)

    目前 我的服务器上有一个使用 Ruby 运行的 Apple 推送通知 我想在 Erlang 中使用一个 因为我想使用一个主管来监视它 有人有任何代码可以帮助我吗 这是我的 Ruby 代码 我不喜欢当前实现的一件事是它似乎无法保持连接 它每天
  • 当在 erlang 模块上调用“new”时,它会做什么?

    我见过 Erlang 代码中使用了 module name new 但是 module name 模块中没有引用 new 函数 新 有什么作用 它用于 参数化模块 参见here http yarivsblog com articles 20
  • Erlang 中事件流(又名 CEP)的实时关联/分析有什么框架吗?

    想要分析具有某些特征 例如公共来源 的事件流 并在给定的时间窗口内 最终将这些多个事件关联起来并从中得出一些推论 最后启动一些操作 我对复杂事件处理 CEP 的有限了解告诉我 它是此类事情的理想选择 然而 在我迄今为止的研究中 我发现人们将
  • Elixir - 递归列表值的总和

    只是尝试对列表值进行简单求和 defmodule Mth do def sum list do 0 end def sum list H T do H sum list T end end IO puts Mth sum list 1 2
  • erlang中如何将中缀转换为后缀?

    我刚刚遇到这个帖子 https stackoverflow com questions 4621151 the shortest way to convert infix expressions to postfix rpn in c 相当
  • 在 Windows 上编译 Erlang 代码

    我安装了 Erlang 13B 并尝试按照教程进行操作 每次我到达c tut 我得到一个错误而不是 ok tut 所以看起来没有安装任何模块 有人能指出我正确的方向吗 我尝试过 Emacs 但我真的不知道如何使用它 甚至还没有接近让 Erl
  • Erlang 中的二进制和位串有什么区别?

    在 Erlang shell 中 我可以执行以下操作 A 300 300 lt
  • 为什么使用erts_debug:size/1时atom的内存为零?

    I use erts debug size 1计算erlang VM中atom的内存 但我发现输出为零 谁能解释一下原因 7 gt erts debug size true 0 原因是原子与原子的数据一起保存在原子表中 因此整个节点中只有一
  • 与共享数据相比,消息传递的性能损失

    最近有很多关于不使用锁和使用 Erlang 等消息传递方法的讨论 或者关于使用不可变的数据结构 例如函数式编程与 C Java 中的比较 但我关心的是以下几点 AFAIK Erlang 不保证消息传递 消息可能会丢失 如果还要担心消息丢失
  • Erlang:如何限制分配给进程的内存

    我要问的是是否可以限制分配给特定进程的内存 堆或堆栈 以便该进程不能超过它 也许类似于 process flag min heap size MinHeapSize 但针对最大堆 您可以将某种进程跟踪 gen server 放在一起 定期检
  • 如何使用 ibrowse 将附件上传到 CouchDB 中的文档?

    我已经使用curl上传图像文件Penguins jpg 例如 C curl gt curl vX PUT H Content Type image jpeg http localhost 5984 DBNAME DOCID Penguins
  • Erl 无法连接到本地 EPMD。为什么?

    Erlang R14B04 erts 5 8 5 source 64 bit rq 1 async threads 0 kernel poll false Eshell V5 8 5 abort with G root ip 10 101
  • Mnesia:如何同时锁定多行,以便我可以写入/读取一组“一致”的记录

    我多么希望我一开始就能表达我的问题 取一个包含 26 个键 a z 的表 并让它们具有整数值 创建一个流程 哎哟 一遍又一遍地做两件事 在一笔交易中 写入随机值a b and c使得这些值always总和为 10 在另一个事务中 读取值a
  • Erlang get_tcp:recv数据长度

    I user gen tcp recv Socket 0 用于数据接收 但我只能接收1次1418字节 我怎样才能收到发送的数据量 in gen tcp recv Socket 0 您正在询问内核 给我接收缓冲区中现在可用的所有数据 不过 内
  • 如何将列表转换为元组列表?

    我想转换 z z a z z a a z to z 2 a 1 z 2 a 2 z 1 我该怎么做 所以 我需要累积以前的值 它的计数器和元组列表 我已创建记录 record acc previous counter tuples 重新定义
  • 使用自定义 mysql 模式的模块扩展 ejabberd?

    代替ejabberd sql https github com processone ejabberd blob master sql mysql sql L95 我正在使用自定义 MySQL 架构 由于遗留原因 我将对某些活动执行一些数据
  • 如何限制Erlang VM(BEAM)使用的核心数量?

    我正在具有 2 个四核 Xeon E5520 2 2GHz 24 0GB RAM 和 Erlang R15B02 启用 SMP 的节点上运行实验 我想知道是否可以限制Erlang VM使用的核心数量 以便我可以暂时禁用一些核心并逐步增加数量
  • Erlang 应该如何处理通用数据?

    假设我正在使用 Erlang 构建游戏服务器 每个用户检查某些内容 例如找到最近的玩家 是很常见的 因此通常有一个管理器类 在上面的例子中 我们使用互斥锁 据我所知 Erlang 通常会为每个 TCP 连接 用户会话 创建新的 Erlang
  • 如何在 Erlang 中将整数列表连接到字符串?

    我有这个元组 如下所示 127 0 0 1 现在我想将该元组作为字符串传递 127 0 0 1 到外部库 地理 IP 库 将此元组转换为字符串的最佳方法是什么 您可以随时使用inet parse ntoa 1 1 gt inet parse

随机推荐