Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在elixir模块中创建全局变量_Elixir - Fatal编程技术网

如何在elixir模块中创建全局变量

如何在elixir模块中创建全局变量,elixir,Elixir,我在elixir中有以下代码: def get_trackerid(imei) do client = get_new_client() {:ok, result} = :cqerl.run_query(client, "SELECT * FROM trackers_by_imei where imei = \'#{imei}\';") row = :cqerl.all_rows(result) end 现在,许多函数都在调用get_trackerid函数,每次调用该函数时,都会调

我在elixir中有以下代码:

def get_trackerid(imei) do
  client = get_new_client()
  {:ok, result} = :cqerl.run_query(client, "SELECT * FROM trackers_by_imei where imei = \'#{imei}\';")
  row = :cqerl.all_rows(result)
end
现在,许多函数都在调用get_trackerid函数,每次调用该函数时,都会调用数据库

有没有一种方法可以在elixir中编写函数,从而将结果存储在局部变量中。因此,当下次请求相同imei的trackerid时,我可以从局部变量本身获取数据


我认为elixir中没有全局变量的概念,所以这不是一个选项,对吗?

您有几个选项可以在elixir中保存状态

如果此方法是运行的模块的一部分,则可以使用
state
参数来缓存值


您还可以使用缓存来缓存这些值。这将在GenServer内部和外部工作。

您所询问的内容称为“”。我提到,如果你喜欢谷歌,看看你是否能找到更多关于这个主题的信息

这是一篇很棒的博客文章,讨论了长生不老药中的记忆技巧:

TL;DR

构造一个缓存,并在尝试执行计算时检查缓存,以查看答案是否已经存在。在那篇博客文章中,他构建了一个键值存储作为缓存,但显然,您应该构建什么样的缓存在很大程度上取决于您正在缓存的数据


提供的链接已断开。@tunedconsulting我已将链接更改为指向该网页的google缓存版本。新链接在此处(:我修改了链接,指向链接的internet存档副本。_Teach_a_man_to_fish_moment:将来,与其抱怨链接被破坏,不如自己尝试在internet存档中查找链接并更新条目。只是一个建议。这也会非常有帮助