小编aru*_*ani的帖子

如何在灵药中打破Enum.reduce

我想找到第一个负数之前的所有正数的总和.

我在elixir中得到以下列表.

iex(4)> steps = [0,1,2,3,-4,5,6,-1]
Run Code Online (Sandbox Code Playgroud)

我按如下方式计算此列表的总和

Enum.reduce(steps,0,fn x,acc -> acc=acc+x end)
Run Code Online (Sandbox Code Playgroud)

一旦我们达到负数,如何减少?

erlang elixir

6
推荐指数
2
解决办法
1471
查看次数

正确使用ETS可以提供​​功能

所以这是我的代码:

defmodule Parent do
  def arun(pid) do
    :ets.new(:my_table,[:named_table, :set, :public, read_concurrency: true])
    :ets.give_away(:my_table, pid, [])
  end

  def receiver do
    pid = spawn(fn -> arun(self()) end)
    receive do
      {'ETS-TRANSFER',_,_,_} ->
        IO.puts "ets got transferred"
      _ ->
        IO.puts "I dont know what happened"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试编译此运行时错误即将到来.

iex(31)> Parent.receiver

17:37:19.183 [error] Process #PID<0.204.0> raised an exception
** (ArgumentError) argument error
    (stdlib) :ets.give_away(:my_table, #PID<0.204.0>, [])
    parent.ex:4: Parent.arun/1
Run Code Online (Sandbox Code Playgroud)

还有人可以告诉我正确的方法来制作一个ets表并将其所有权交给其他进程吗?我正在尝试这样做:父进程将创建一个异步任务,它将创建一个ets表,然后此任务/进程将所有权返还给父进程.

erlang elixir ets

1
推荐指数
1
解决办法
92
查看次数

spawn内部的非匿名函数不是异步执行的

所以这是我的代码:

 defmodule Test do

   def fun() do
     Process.sleep(10000)
     IO.puts "sleep over"
   end

   def dummy(:b) do
     spawn(fun())
   end
   def dummy(:a) do
     spawn(Test,:fun,[])
   end

   def dummy() do
     spawn(fn -> Process.sleep(10000)
                 IO.puts "sleep over"
     end)
     IO.puts "process started"
   end
 end
Run Code Online (Sandbox Code Playgroud)

在运行此代码并执行各种虚函数时,我得到了这个输出:

iex(1)> c("test.exs")
[Test]
iex(2)> Test.dummy
process started
:ok
sleep over
iex(3)> Test.dummy :
** (SyntaxError) iex:3: unexpected token: ":" (column 12, codepoint U+003A)

iex(3)> Test.dummy :a
#PID<0.111.0>
iex(4)> 
nil
iex(5)> 
nil
sleep over           
iex(6)> Test.dummy :b
sleep over
** (ArgumentError) argument error …
Run Code Online (Sandbox Code Playgroud)

elixir

1
推荐指数
1
解决办法
56
查看次数

如何通过 AWS 控制台阻止 AWS Lamba 测试?

我在生产中有一个 AWS Lambda 函数。触发它可以导致货币交易。我想阻止通过 AWS 控制台测试此 lambda 的功能,以便具有控制台访问权限的用户不会意外触发它,以便他们可以在相应的登台 lambda 上进行测试。它以某种方式可能吗?

testing amazon-web-services aws-lambda

0
推荐指数
1
解决办法
37
查看次数

标签 统计

elixir ×3

erlang ×2

amazon-web-services ×1

aws-lambda ×1

ets ×1

testing ×1