1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 07:08:01 +00:00

Add Passing Around And Using Modules as an elixir til

This commit is contained in:
jbranchaud
2019-03-26 14:04:42 -05:00
parent 256376923e
commit 629c15aeb4
2 changed files with 40 additions and 1 deletions

View File

@@ -10,7 +10,7 @@ smart people at [Hashrocket](http://hashrocket.com/).
For a steady stream of TILs from a variety of rocketeers, checkout
[til.hashrocket.com](https://til.hashrocket.com/).
_796 TILs and counting..._
_797 TILs and counting..._
---
@@ -145,6 +145,7 @@ _796 TILs and counting..._
- [List Functions For A Module](elixir/list-functions-for-a-module.md)
- [Listing Files In IEx](elixir/listing-files-in-iex.md)
- [Match On A Map In A With Construct](elixir/match-on-a-map-in-a-with-construct.md)
- [Passing Around And Using Modules](elixir/passing-around-and-using-modules.md)
- [Pattern Matching In Anonymous Functions](elixir/pattern-matching-in-anonymous-functions.md)
- [Quitting IEx](elixir/quitting-iex.md)
- [Range Into List Using Comprehensions](elixir/range-into-list-using-comprehensions.md)

View File

@@ -0,0 +1,38 @@
# Passing Around And Using Modules
A module is a bag of functions. When we define a module, we are tying it to
an atom. If we pass around the atom that references this module, then we can
use it to call its functions.
For example, consider two types of greetings:
```elixir
defmodule Hello do
def get_greeting do
"Hello, World!"
end
end
defmodule Hola do
def get_greeting do
"Hola, Mundo!"
end
end
```
And a generic greeting module that accepts a language module:
```elixir
defmodule Greeting do
def say_hello(language_module) do
language_module.get_greeting
|> IO.puts
end
end
Greeting.say_hello(Hello) # => "Hello, World!"
Greeting.say_hello(Hola) # => "Hola, Mundo!"
```
The module reference that we pass in to `Greeting.say_hello` can be used to
invoke the `get_greeting` function.