はじめに
- Elixirのドキュメントを読んでおりました
- Redefining existing operatorsを読んで「へぇ〜」と思ったので書いておきます
-
+
算の結果を-
算にしてみます
WrongMath
defmodule WrongMath do
def a + b, do: a - b
end
- こんなのを定義するわけです
- 早速つかってみましょう
iex> defmodule WrongMath do
...> def a + b, do: a - b
...> end
{:module, WrongMath,
<<70, 79, 82, 49, 0, 0, 4, 252, 66, 69, 65, 77, 65, 116, 85, 56, 0, 0, 0, 127,
0, 0, 0, 14, 16, 69, 108, 105, 120, 105, 114, 46, 87, 114, 111, 110, 103, 77,
97, 116, 104, 8, 95, 95, 105, 110, 102, ...>>, {:+, 2}}
iex> import WrongMath
WrongMath
iex> 1 + 2
** (CompileError) iex:3: function +/2 imported from both WrongMath and Kernel, call is ambiguous
- 怒られます
- あいまいは駄目よとのことです
- 以下のようにすると怒られません
iex> import WrongMath
WrongMath
iex> import Kernel, except: [+: 2]
Kernel
iex> 1 + 2
-1
Wrapping Up
- ここでは定義済の演算子をoverrideしてみました
- 公式には、Defining custom operatorsの紹介もあります
- 使用にあたってはFinal noteをよくよくご参照ください
- Enjoy Elixir!