in?とinclude?について

in?という、ActiveSupportのメソッドが使いやすいかもしれないと思ったので、書いておきます。

自分が今やっているプロジェクトで使われていたので、調べました。

結果は同じのinclude?と比較します。

include?

まずは、include?からです。

x = [1, 2, 3]
y = 1
x.include?(y)
→ true

xの中にyが含まれているかどうかですね。

in?

x = [1, 2, 3]
y = 1
y.in?(x)

inは「...の中に」などの意味があります。 なので、yはxの中に含まれていますか?という風になります。

やってることは一緒なのですが、対象とする位置がずれます。

in?の使い方はこういう風に使えます。

x = [1, 2, 3]
y = [1, 3, 6]
x.reject{|x| x.in?(y)}
→[2]

xを一つづつ出して、yの中に含まれていたら削除するという形です。

こんな感じで使うことができます。

「〜の中」の対象の位置をどこに重きをおくかで、使い分けをすることですね。