2x2配列を返す長いコードブロックの結果にメンバー変数を割り当てたいと思います。これはコンストラクターで行われます。しかし、コンストラクターで行う場合、
def initialize
@foo = ...
...
end
次に、そのブロックのコードの最初の行のみが@fooに割り当てられます。メソッドを定義すると、コンパイル中に不明なメソッドエラーが発生します。これは、どのインスタンスを呼び出すかがわからないため、理にかなっています。'self'はコンストラクターにあるので、まだインスタンスがないので、私は'self'を実行できないと思います。
クラス定義にコードのブロックは必要ありません。代わりに、どこかにきちんとカプセル化してください。クラスメソッドでは、各インスタンスにのみ属する必要がある他の変数をそのメソッドで使用できるようにする必要があります。