Elixir: 1.5.1, Phoenix: 1.3.0 Python ではメソッドの前に @hoge を書いてメソッド定義の挙動を変えられる。 class Foo: def i_am_instance_method(self): print('hi') @staticmethod def i_am_static_method(): print('yo') defmodule OnDefinition do def on_definition(env, _kind, _name, _args, _guards, _body) do Module.put_attribute(env.module, :my_func_attr, nil) end end defmodule Foo do # Foo モジュール内で関数を定義したタイミングで呼ばれるフックを指定する。 @on_definiti
![Elixir でモジュール属性を使って関数定義をデコレーションする - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/0c7583c92938a50cf7e1658f8e687fa6674e6d58/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9RWxpeGlyJTIwJUUzJTgxJUE3JUUzJTgzJUEyJUUzJTgyJUI4JUUzJTgzJUE1JUUzJTgzJUJDJUUzJTgzJUFCJUU1JUIxJTlFJUU2JTgwJUE3JUUzJTgyJTkyJUU0JUJEJUJGJUUzJTgxJUEzJUUzJTgxJUE2JUU5JTk2JUEyJUU2JTk1JUIwJUU1JUFFJTlBJUU3JUJFJUE5JUUzJTgyJTkyJUUzJTgzJTg3JUUzJTgyJUIzJUUzJTgzJUFDJUUzJTgzJUJDJUUzJTgyJUI3JUUzJTgzJUE3JUUzJTgzJUIzJUUzJTgxJTk5JUUzJTgyJThCJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz00M2UxMWU1NzI4YmMzZDE1YjVlNTNlODZkODFiYmY1YQ%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDB1YXNpJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz04MWQ2NzE2YzU5MWQwMzFhMTJhNzU1ZWRlMmI2YjM0Nw%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3D37bc81807bdb686c358c11216c579412)