首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Elixir -如何通过iex控制台返回可由另一个函数拾取的值?

Elixir是一种基于Erlang虚拟机的函数式编程语言,它具有高可伸缩性、容错性和并发性。通过Elixir的iex控制台,可以方便地执行和调试Elixir代码。

要通过iex控制台返回可由另一个函数拾取的值,可以使用Elixir中的spawn/1函数创建一个新的进程,并在该进程中执行需要返回的代码。然后,使用send/2函数将结果发送给另一个进程,该进程可以通过receive/1函数接收结果。

下面是一个示例代码:

代码语言:txt
复制
defmodule Example do
  def start_process do
    pid = spawn(fn -> calculate_value() end)
    send(pid, {:result, "Hello, World!"})
  end

  def calculate_value do
    receive do
      {:result, value} -> IO.puts("Received value: #{value}")
    end
  end
end

# 在iex控制台中执行以下代码
iex> Example.start_process()

在上面的示例中,start_process/0函数创建了一个新的进程,并在该进程中执行calculate_value/0函数。然后,使用send/2函数将结果{:result, "Hello, World!"}发送给该进程。calculate_value/0函数通过receive/1函数接收结果,并将结果打印出来。

这样,通过iex控制台返回可由另一个函数拾取的值就实现了。

推荐的腾讯云相关产品:腾讯云函数(Serverless Cloud Function),它是一种无服务器计算服务,可以让您在云端运行代码而无需购买和管理服务器。您可以使用腾讯云函数来执行Elixir代码,并通过事件触发机制实现与其他服务的集成。了解更多信息,请访问腾讯云函数官方文档:腾讯云函数

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

(译) Understanding Elixir Macros, Part 1 Basics

就我个人而言, 我觉得宏主题非常有趣, 在本系列文章中, 我将试图解释它们是如何工作, 提供一些关于如何编写宏基本技巧和建议....另外, 从这个图中可以得到另一个重要结论, Elixir 在生成了二进制之后, 元编程就停止了....虽然不常见, 但对一个 quoted expression 求值也是可以: iex(2)> Code.eval_quoted(quoted) {3, []} 返回元组中包含了表达式结果, 以及一个列表...| | 表达式结果 变量名称 变量 从这个绑定列表中我们可以看出, 该表达式绑定了两个变量 a 和 b, 对应分别为 1...然后我们使用某种格式来打印它们(借助Macro.to_string/1), 最后返回结果. 展开一个 AST 在 Shell 观察其是如何连接起来是很容易.

18630

(译) Understanding Elixir Macros, Part 4 - Diving Deeper

__ENV__ 是一个结构体, 每当你在代码中使用它时, 它将在编译时扩展为适当. 因此, 只要在代码中写入 __ENV__.file. 文件生成字节码将包含包含文件名(二进制)字符串常量....这些都是被 quoted . 我是如何知道?其实我不知道. 我一般通过不断试错来获得这些信息....我将通过向宏定义中添加另一个参数来测试. 一旦我得到结果, 我会试图找出参数表示什么, 然后开始构建宏. 宏结束处 nil 确保我们不生成任何东西(我们生成 nil 通常与调用者代码无关)....所以接下来我们需要: 从 quoted 头中提取函数名和参数 将这些注入我们返回 AST 中 将函数体注入同一个 AST 打印跟踪信息 我们可以使用模式匹配从这个 AST 片段中提取函数名和参数...首先, 让我们来看看这个 head 是如何被 quoted : iex(16)> quote do my_fun(a,b) when a < b end {:when, [], [ {:my_fun

10030
  • (译) Understanding Elixir Macros, Part 2 - Micro Theory

    由于宏也是函数, 而 Elixir 在调用函数时可以省略括号, 所以我们可以这样写: Tracer.trace 1+2 这很可能是 Elixir 之所以不在函数调用时要求括号最主要原因....那么我们是如何返回 state 呢?这是因为 defcall 宏生成了一个隐藏state 变量, 它之后将被 reply 宏明确使用....通过这样做, 我们指定 conn 是一个对调用者可见变量. 上述代码没有解释 body 是如何注入. 在这之前, 你需要理解宏所接受参数....这意味着 quote(do: {a, b}) 将会返回一个二元元组, 它两个都是被引用(quoted). iex(1)> quote do :an_atom end :an_atom iex(2...__using__(...) end 这可以通过查看 Elixir 源代码来证明. 这证明了另一点 — 不断展开. use 宏生成调用另一个代码. 或者更巧妙地说, 用生成代码来生成代码.

    13940

    (译) Understanding Elixir Macros, Part 6 - In-place Code Generation

    这允许我们针对某些输入(在本例中是关键字列表)进行元编程, 并生成代码, 而无需编写专门宏. 注意, 在上面的代码中, 我们如何使用 unquote 将变量注入到函数子句定义中....我稍后会解释这是如何工作....iex(line 13) Elixir.Test.pause(:running) = :paused iex(line 13) Elixir.Test.resume(:paused) = :running...在第一级生成代码(由我们返回代码)某处, 我们需要放置以下表达式: def unquote(head) do ... end 这个表达式将在调用者上下文(客户端模块)中被调用, 它任务是生成函数...这是最难解释. 为了能够理解它, 你必须清楚 AST 是如何传递给宏并返回到调用者上下文中.

    17840

    懒惰力量

    这篇文章继续走标题党路线,给大家奉上不是鸡汤,而是正儿八经技术文章,讲的是Lazy evaluation。 在大家熟悉编程语言中,调用一个函数,系统会老老实实返回调用结果。...lazy evaluation,顾名思义,就是调用函数函数并不进行运算,而是返回一个数据结构,这个数据结构说:「嗯,你要调用这个函数,我知道了,你该干嘛干嘛吧。」...如果接下来程序需要使用这个函数返回,那么计算才真正开始。 听上去似乎没太多好处。...而求值过程是:从 [1, 2, 3, 4] 里取出 1,依次调用 funs 列表里函数,得到返回,再送给 Enum.reduce 进行计算。...从更广泛意义上讲:Lazy evaluation能避免不必要计算,提高效率。比如说在某些情况下,代码根本没有使用某次计算返回,这样就可以节省运算。

    79580

    Elixir 连续运行时代码覆盖率采集方案

    注意是代码覆盖率高不能说明代码质量高, 但是反过来看, 代码覆盖率低, 代码质量不会高到哪里去....BEAM 文件大致结构如下图: 让我们来通过一个 Elixir mini demo 项目查看下 beam 文件大概内容: Step 1、clone 项目 yeshan333/explore_ast_app...Step 3、接下来让我们通过 Erlang 标准库 beam_lib 文件查看 Beam 文件中 chunk: # 打开 iex console iex -S mix 查看编译后 BEAM 文件...我们还可以通过 beam_lib 标准库获取到模块(ExploreAstApp)对应 Erlang AST(抽象语法树): iex(3)> result = :beam_lib.chunks(String.to_charlist...Elixir Application 运行时覆盖率采集示例 通过前文, 在了解了 Erlang Cover 模块实现细节之后, 让我们以一个部署运行 Elixir Application(我们会使用之前

    35650

    我终于逃离了 Node

    在 JavaScript 中,红色函数(异步)可以调用蓝色函数(同步),但反过来是不行。这两种调用语法也不同。当引入一个红色函数时,它会在你代码库中流血,染红许多二级和三级函数。...,我永远不会忘记当我第一次在 Elixir REPL,iex 中做一个 SQL 查询那一刻。...不是作为一个特性,而是其存在一部分。 当我运行上面的 Postgrex.start_link 时,这个函数会向我返回一个 pid,我将其存储在变量 conn 中。pid 是一个地址。...(而且完全用不着红色 / 蓝色函数二分法。) 在 Elixir 和 Erlang 中,并发不是在函数层发生,而是在模块层发生。你可以将模块实例化为一个进程,现在它与其他进程并发运行。...Erlang 经过了多年实战测试,然后 José Valim 和他团队创建了 Elixir,其唯一目标是通过大量借鉴有史以来最人性化那些语言优点,来做出一种更为人性化产物。

    51130

    如何使用一门新语言

    今天,我就我过去三周经验,讲讲如何以正确姿势在生产环境中使用一门新语言。...过去三周,我在疯狂地使用 elixir,做了两个系统,一个是我上文提到 policy engine,另一个是个尽可能通用 activity stream / notification system。...可以和现有的系统无缝对接 elixir 是无法和 javascript 直接交互。我们只能通过约定俗成网络协议。...和现有的日志系统以及错误报告系统集成 如果说上文所述皆为如何让新项目能够在生产环境启动起来,那么接下来所说如何在生产环境中运行起来。...返回结果 grep 后再通过 sed 获取里面的数字,即为端口号。 这里存在着一些安全隐患。

    96060

    Elixir: 编程语言未来

    比如,一个操作开始还未返回结果,就可以开始另一个操作。 这样调用远程 API 或者远程 RPC,耗时为最慢那一个操作耗时。从这一点看,大部分流行语言都可以做到并发调用,但 PHP 难以做到。...因为通过增加机器数量能抗住大量用户请求比节省机器更加简单和迫切。 这也是很多互联网公司动辄几百台上千台服务器现状。用户和请求量多少由于业务逻辑不同很难比较,只能比较机器数量了。...否则你要么需要记住和理解复杂 GC 调优参数、要么像 PHP 那样过一段时间将进程杀掉重来。 元编程和 DSL 扩展性 在语法级别的抽象和封装更能提高开发效率。Elixr 中如何实现 DSL。...比如 PHP php -a, sbt, Clojure lein, Erlang erl, Elixir iex 等等。 脚本执行 这是脚本语言一大优势。...比如:真正抢占式调度;充分利用多核心并行执行;Actor 模型;监控树;透明分布式; 极其高稳定性;代码热更新部署;函数式编程;模式匹配;等等。并且很多 Erlang 下工具也是可以直接使用。

    2.9K40

    Elixir和ScyllaDB教你创建CRUD CLI,惊人效率提升!

    本文目的是介绍如何使用这两种技术创建您第一个应用程序,通过这两种令人难以置信技术进行开发,为您未来打开大门和可能性。启动项目事先我们需要安装 Elixir 和 ScyllaDB。...MediaPlayer.Actions;Connection引用模块别名MediaPlayer.Config.Connection;keyspace返回我们将使用键空间私有函数;table返回我们将使用私有函数...另一点:Elixir“|>”管道作用类似于“|” Unix shell 管道,用于将函数返回作为下一个函数第一个参数传递。在此处阅读有关管道更多信息。...,毕竟它会打印添加到屏幕上歌曲,如下所示:id, title, album, artist, created_at我们通过选择和 来定义查询,keyspace并table记住我们已经有两个返回这些函数...在本例中,该函数期望收到一个包含所选各个字段映射;我们打印具体;最终这将是我们回归;一个重要细节:在这种情况下,run_query如果我们插入了多行,将返回多个,对吧?

    45430

    Go 编程 | 连载 11 - 复杂数据类型 Slice

    第二种定义方式 使用 make 函数也可以定义切片,make 函数还可以定义 map 以及 channel 数据类型并返回这些数据类型实例。...], 3 make 函数传入两个,一个是类型,另一个是长度。...使用 make 函数定义切片时,切片中元素为元素类型默认,切片是动态数组,也可以通过索引对元素进行修改。...切片是引用类型 数组是类型,而切片是引用类型,同样可以通过在自定义函数中修改传入切片类型数据来验证切片是引用类型。...二、切片操作 追加 切片追加操作可以通过内置 append 函数实现,该函数需要传入要追加切片以及要追加元素,可以追加一个元素,也可以追加多个元素。

    48820

    构建下一代 HTTP API - 测试

    比如你告诉生成式测试需要一个字符串,一个整数,一个整数数组等,它都能随机给你生成对应数据。通过组合这些基础数据结构,我们可以生成几乎任何复杂数据结构,从而对几乎任何函数做生成式测试。...这个问题进一步可以分解成两个问题: 如何通过 JSON schema 生成正确数据? 如何通过 JSON schema 生成错误数据?...那么,如何实现这样功能呢?不同语言有不同方法,比如 Elixir,有一个生成式测试库叫 StreamData,它提供根据现有 stream map/reduce 出新 stream 能力。...接下来就是如何验证测试结果是否正确。这个时候,上文中问那两个问题就很重要了: 如何通过 JSON schema 生成正确数据?...我们需要验证正确输入会导致正确 response,比如 200 OK,而不是 500 Internal error 什么 如何通过 JSON schema 生成错误数据?

    53720

    构建下一代 HTTP API - 架构

    quenya_builder 提供一个命令行工具可以随时将 OpenAPI v3 spec 编译成 elixir 代码。未来也许通过代码模板支持 rust 服务端代码生成(基于 tide)。...服务端基础库 quenya,提供服务器 API 运行期各种库函数。生成代码会调用这些函数在运行时进行相应处理,比如各种各样 API middleware。...注意,虽然 Quenya 是用 Elixir 撰写,Quenya 所生成服务器端代码也是 Elixir 代码,但整个架构和语言关系不大,我也尽量会让文章不涉及太多语言细节导致影响大家阅读。...API 返回数据是否符合 Response schema,这样,我们可以在还没有真正撰写 API 业务逻辑前,就准备好相应 UT。...(Interactive Elixir) as: $ iex -S mix If in future you modified config for quenya building options

    82420

    四十六.Powershell和PowerSploit脚本攻防万字详解

    不同操作系统内置Powershell是不一样,比如win7或win2008。 (2) 其次,如何查看版本呢?...(4) 管道 PowerShell管道作用是将一个命令输出作为另一个命令输入,两个命令之间用管道符号(|)连接。...举个例子来看管道是如何工作,假设停止所有目前运行汇总以 “p” 字符开头命名程序,命令如下: get-process p* | stop-process 管道并不是什么新事物,以前Cmd控制台也有重定向命令...传统Cmd管道是基于文本,但是Powershell管道是基于对象。例如: linux:ls cmd:dir 如果只获取其中name、mode,则使用如下指令。...New-ElevatedPersistenceOption 为添加持久性函数配置提升持久性选项。

    67710

    四十二.Powershell恶意代码检测系列 (3)PowerSploit脚本渗透详解

    不同操作系统内置Powershell是不一样,比如win7或win2008。 (2) 其次,如何查看版本呢?...(4) 管道 PowerShell管道作用是将一个命令输出作为另一个命令输入,两个命令之间用管道符号(|)连接。...举个例子来看管道是如何工作,假设停止所有目前运行汇总以 “p” 字符开头命名程序,命令如下: get-process p* | stop-process 管道并不是什么新事物,以前Cmd控制台也有重定向命令...传统Cmd管道是基于文本,但是Powershell管道是基于对象。例如: linux:ls cmd:dir 如果只获取其中name、mode,则使用如下指令。...New-ElevatedPersistenceOption 为添加持久性函数配置提升持久性选项。

    3.2K30

    有趣Code Poster

    Pete Corey博客《Build your own code poster with Elixir》展示了如何通过Elixir实现一个类似Commits.io一样功能,即可以将自己代码融合到一张...这里所谓文件是一个宽泛概念,可以是一个文件系统,也可以通过管道(pipe)将字节流传递到另一个进程,可以是Unix Socket,设备驱动,内核API以及TCP连接。...那么,如这般不同数据结构如何才能够像Stream一样通过管道连接起来呢? 在Elixir中,我们通常通过定义一个struct来完成对数据抽象。...例如,load code file操作需要一个code path,返回文件中代码code;load image file操作则需要一个image path,返回一个image结构体。...该原则要求一个函数所有操作都处于相同抽象层。只有如此,才不会让函数表达意思失衡,有的隐藏了细节,有的又暴露了不必要内容。 我们可以通过对需求任务逐层拆分来保证这一点。

    1K40
    领券