Switched to Elixir and missed method_missing functionality in other languages?
This package is for you! It implements method_missing which you can bring into any other module!
defmodule Dog do
use MethodMissing
def method_missing(func, _args) do
func_name = Atom.to_string(func)
cond do
Regex.match?(~r/bark|woof/, func_name) -> "WOOF"
true -> "?"
end
end
end
Dog.bark()
> "WOOF"
Dog.woof()
> "WOOF"
Dog.meow()
> "?"
¯\_(ツ)_/¯
If you like weird great things, check out https://github.com/wojtekmach/oop
If available in Hex, the package can be installed as:
- Add
method_missing
to your list of dependencies inmix.exs
:
```elixir
def deps do
[{:method_missing, "~> 0.1.0"}]
end
```
- Ensure
method_missing
is started before your application:
```elixir
def application do
[applications: [:method_missing]]
end
```