首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elli与Elixir基本用法问题

Elli与Elixir基本用法问题
EN

Stack Overflow用户
提问于 2015-10-21 14:56:54
回答 2查看 354关注 0票数 5

我正在我的应用程序中使用elli https://github.com/knutin/elli

下面提供了示例代码。这是相当基本的,每次运行时,我只得到“内部服务器错误”。我不知道我做错了什么。有谁能帮忙吗?

代码语言:javascript
复制
defmodule Client.TestHttp do
  @behaviour :elli_handler

  def handle(_Req,_Args) do
    handle(:elli_request.method(Req), :elli_request.path(Req),Args)
  end

  def handle_event(_,_,_)do
    :ok
  end

  def handle(:GET,[],_)do
    {:ok, [], "OkGet"}
  end
end

我就是这样执行的

代码语言:javascript
复制
{:ok,pid}=:elli.start_link [callback: Client.TestHttp, port: 2020]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-21 15:04:52

看起来,您还没有从示例中完全翻译Erlang代码,并且仍然使用以大写字母开头的变量。

将句柄更改为:

代码语言:javascript
复制
  def handle(req, args) do
    handle(:elli_request.method(req), :elli_request.path(req), args)
  end

注意变量名称的差异。在Elixir中,变量用snake_case编写,模块用CamelCase编写。在匹配中使用和下划线(_) (如_var )表示变量未使用。

您的代码实际上是将ReqArgs扩展到原子,因为在Elixir中的模块名是原子:

代码语言:javascript
复制
Req == :'Elixir.Req' # true
票数 5
EN

Stack Overflow用户

发布于 2015-10-21 15:58:57

除了@Gazier的回答(当然,这是正确的)之外,您的代码在另一种情况下看起来也是错误的。在你最初的消息来源中:

代码语言:javascript
复制
def handle(_Req,_Args) do
    handle(:elli_request.method(Req), :elli_request.path(Req),Args)
end

调用:elli_request.method的参数需要是_Req,而:elli_request.path的参数也需要是_Req_Args。如果以大写字母开头的变量是正确的(它们不是),则如下所示:

代码语言:javascript
复制
 def handle(_Req,_Args) do
        handle(:elli_request.method(_Req), :elli_request.path(_Req),_Args)
    end

但正如加尼埃指出的那样,你的变量无论如何都没有正确的大小写。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33262679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档