Call an object method: Difference between revisions
Content added Content deleted
m (Corrected small problem with FreeBASIC program output) |
No edit summary |
||
Line 245: | Line 245: | ||
<lang elena> |
<lang elena> |
||
instance message &subj1:param1 &subj2:param2. |
instance message &subj1:param1 &subj2:param2. |
||
</lang> |
|||
=={{header|Elixir}}== |
|||
Elixir doesn't do objects. Instead of calling methods on object you send messages to processes. Here's an example of a process created with spawn_link which knows how to receive a message "concat" and return a result. |
|||
<lang elixir> |
|||
defmodule ObjectCall do |
|||
def new() do |
|||
spawn_link(fn -> loop end) |
|||
end |
|||
defp loop do |
|||
receive do |
|||
{:concat, {caller, [str1, str2]}} -> |
|||
result = str1 <> str2 |
|||
send caller, {:ok, result} |
|||
loop |
|||
end |
|||
end |
|||
def concat(obj, str1, str2) do |
|||
send obj, {:concat, {self(), [str1, str2]}} |
|||
receive do |
|||
{:ok, result} -> |
|||
result |
|||
end |
|||
end |
|||
end |
|||
obj = ObjectCall.new() |
|||
IO.puts(obj |> ObjectCall.concat("Hello ", "World!")) |
|||
</lang> |
</lang> |
||