ユーザー:
Rubyでpost = [1,2,nil,4] のとき、 @posts = posts.select {|post| post}を実行すると@postsに[1,2,4]が代入されます。このように配列からnil以外の要素を選び出す方法は上に書いた方法が普通の方法ですか。
アシスタント:
はい、Rubyで配列からnil以外の要素を選び出すために、selectメソッドを使う方法は一般的です。@posts = posts.select {|post| post}というコードは、nilでないすべての要素を選び出して新しい配列を作成します。ただし、もっと簡潔な方法もありますので、いくつかご提案いたします。
-
compactメソッド: これはnil要素を取り除くための最も簡単な方法です。@posts = posts.compact
-
selectメソッド: ご質問にあった方法ですが、nil以外の要素を選び出します。@posts = posts.select {|post| post}
-
rejectメソッド:nil要素を除外するために使うこともできます。@posts = posts.reject {|post| post.nil?}
どの方法を選ぶかは、ご自身の好みやコードの文脈によりますが、compactメソッドはこの特定の目的のために用意されているため、最も簡潔で読みやすい選択肢と言えるでしょう。