chan11347

chan11347

Print all data out

todo_server = [
%{date: ~D[2020-05-19], id: 1 ,time: ~T[16:52:00], title: "Shopping"},
%{date: ~D[2020-05-19], id: 2 ,time: ~T[16:52:00], title: "thinking"},
%{date: ~D[2020-05-20], id: 3 ,time: ~T[16:52:00], title: "Drinking"},
%{date: ~D[2020-05-20], id: 4 ,time: ~T[16:53:00], title: "swimming"}
]

i have 4 different value, so i can use

def time_check(todo_server, time) do
    GenServer.call(todo_server, {:time_check, time})
  end

i have a function can print out the whole result with the time i asked for
Todo.Server.time_check(todo_server, ~T[16:52:00])
return

[
%{date: ~D[2020-05-19], id: 1 ,time: ~T[16:52:00], title: "Shopping"},
%{date: ~D[2020-05-19], id: 2 ,time: ~T[16:52:00], title: "thinking"},
%{date: ~D[2020-05-20], id: 3 ,time: ~T[16:52:00], title: "Drinking"}
]

but how to print our the whole todo_server? by

def show_all(x) do
    IO.inspect(x)
  end

?

First Post!

sushant12

sushant12

what does your handle_call callback look like?

Most Liked

lucaong

lucaong

So you want to see all values in the todo_list part of the GenServer state (that’s different from “the value of todo_server”, as todo_server in your time_check function is the pid or name of a GenServer process).

Here is the code from your previous message:

def handle_call({:show_all}, _, {name, todo_list}) do
  {:reply, Todo.List.show_all(todo_list), {name, todo_list}}
end

You are matching on the message {:show_all}, so you need to issue the following call: GenServer.call(todo_server, {:show_all}).

Note that there are a couple of more things you could improve, not related to the main question though:

  1. Your message is a tuple of a single element, {:show_all}. It’s not really necessary to wrap the message in a tuple, if it’s made of a single value: you could just send directly the atom :show_all instead. Of course, if you change this, the message that you send in GenServer.call should match the one that you pattern match in handle_call.

  2. Instead of printing the list with IO.inspect, you could just return it, and in case let the caller print it.

kip

kip

ex_cldr Core Team

As @lucaong pointed out, the message you send must have a matching function head. In this cas you are sending the message :show_all but you are only expecting a message {:show_all}. They are not the same.

For this class of error the messages are pretty clear I think so its good to get comfortable with reading function clause errors.

Where Next?

Popular in Questions Top

minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
ovidiubadita
Hey all, I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
lessless
I believe there are people here who are dealing with CSV files import on the daily basis, and since Excel is a really popular tool there ...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
albydarned
Hello all! I am typing this post from my new MacBook Pro with the M1 chip. I’m loving it so far, and will probably use it as my daily dr...
New
marius95
Hello everyone, I try to use an Javascript Event Handler in my root.html.leex file. Therefore I created a function in the app.js file: ...
New
svb
Hi! Currently I want to submit a form by pressing the Enter key. However, since my input field is of type “textarea” this is just adds a...
New

Other popular topics Top

vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
hariharasudhan94
I would like to know what is the best IDE for elixir development?
New
AstonJ
Seen any cool LiveView demos, sample apps or examples? Please post them here! :003:
New
dblack
I’ve got an issue with an app and I’ve no idea of how to troubleshoot it. I’m hoping someone here might have seen something similar. I p...
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New
sergio
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
New

We're in Beta

About us Mission Statement