この記事は、 Crystal Advent Calendar 2017 の6日目の記事です。 crystalには便利なmacroがあります。macroを使えば、記述量も削減でき表現力も向上します。しかし、ただcrystalを書いているだけでは、なかなかそれらのmacroに出会うことができません。 ということで、アドベント・カレンダーの日数稼ぎも兼ねて、macroの紹介をしたいと思います。 そもそも「macroってなんだ」という場合は、下記の本家docsを参照してください。 Macros · GitBook 今回は、 def_equals を紹介します。 def_equals crystal-lang.org/api - Object - def_equals オブジェクトの同値性比較を行う == メソッドを定義します。この==メソッドは、 引数に与えたfieldに対して `==` での比較