self を返す意味は、 他の回答にあるように メソッドチェーンためとおもいます。
ここでは、質問への回答ではありませんが、別の側面を述べたいと思います。
Ruby の Array に reverse, reverse! というメソッドがあります。
http://ref.xaio.jp/ruby/classes/array/reverse
どちらも 配列を逆順にしたものを返します。
reverse は新たな配列をかえしますが、reverse! は レシーバ自身をかえします。
質問文にある swap は、 レシーバー自身を返しているわけです。
そして、 レシーバ自身の内容は swap 呼び出し後は変化しているわけです。(そういうメソッドは破壊的メソッドと呼ばれる)
参考情報
質問文で参考にしている ruby コードでは、 swap は 破壊メソッドであるだけでなく、
パラメータで渡された変数自体も変更(破壊)しています。
# 私なら、そのようなメソッドは定義しません。
2つの Point を 単に swap(交換) させたいなら、次のように書くこともできます。
p0 = Point.new
p1 = Point.new(1.0, 2.0)
p [p0.x, p0.y]
p [p1.x, p1.y]
p0, p1 = p1, p0 # 値を swap する
p [p0.x, p0.y]
p [p1.x, p1.y]
実行結果
[0.0, 0.0]
[1.0, 2.0]
[1.0, 2.0]
[0.0, 0.0]
退会済みユーザー
2016/11/26 12:02