Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

Ruby Selectメソッドの使用方法(例付き)

Rubyのselectメソッドを使用して、オブジェクトの配列をフィルタリングできます。

たとえば、すべてを見つけることができます リスト内の偶数。

selectなし これは次のようになります:

even_numbers = []

[1,2,3,4,5,6].each do |n|
  if n.even?
    even_numbers << n
  end
end

even_numbers

これは、非常に単純なもののかなりのコードです!

selectの使い方を学びましょう 。

メソッド例の選択

selectを使用するにはブロックが必要です。

ブロック内で、trueと評価されるものを返す必要があります またはfalse 、およびselect これを使用してアレイをフィルタリングします。

この記事を読むことで、Rubyのブール値について学ぶことができます。

ここに例があります

[1,2,3,4,5,6].select { |n| n.even? }

これは、導入部の最初の例と同じことを行いますが、コードが大幅に少なくなります。

実際、これをさらに減らすことができます。

このように

[1,2,3,4,5,6].select(&:even?)

この種のショートカットは、配列のすべての要素でメソッドを直接呼び出す必要がある場合にのみ機能します。

ところで、selectを使用することもできます ハッシュ付き。

stock = {
  apples: 10,
  oranges: 5,
  bananas: 1
}

stock.select { |k, v| v > 1 }

# {:apples=>10, :oranges=>5}

ここでk キーとvを表します 値を表します。

言っている

「在庫が1より大きいすべての果物を見つけてください」。

Selectと他の方法の組み合わせ

selectメソッドを別のEnumerableメソッドと組み合わせることができます。

特にwith_index

fruits = %w(apple orange banana)

fruits.select.with_index { |word, idx| idx.even? }

# ["apple", "banana"]

これにより、オブジェクト(この場合は文字列)自体ではなく、インデックスを使用してフィルタリングできます。

インプレース配列フィルタリング

selectを使用する アレイ上では常に新しいアレイが作成されます。

代わりに元の配列を変更する場合は、select!を使用できます。 メソッド。

方法は次のとおりです

fruits = %w(apple orange banana)

fruits.select! { |fruit| fruit.start_with? "a" }

# ["apple"]

感嘆符で終わるメソッド(select!など) )は、新しいオブジェクトを返す代わりにオブジェクトを変更しますが、このルールは言語自体によって強制されません。

それは私たちの間の単なる慣習です。

検索と選択

リストをフィルタリングして結果を含む配列を取得する場合は、Selectが最適です。

しかし、オブジェクトを1つだけ検索したい場合はどうすればよいですか?

findを使用できます メソッド。

このように

letters = %w(a aa aaa aaaa)

letters.find { |l| l.size == 3 }
# "aaa"

letters.find { |l| l.size == 10 }
# nil

検索により、最初の一致、つまりnilが得られます 見つからない場合。

すべて検索方法を理解する

find_allについて疑問がある場合 メソッド、およびそれがfindとどのように関連するか &select ...

とても簡単です!

  • find_all メソッドはselectのエイリアスです 。
  • find メソッドは、多くのオブジェクトではなく、1つの特定のオブジェクトを探すのに役立ちます。

Ruby 2.6は、selectの別のエイリアスを追加します :

filter

選択の反対は何ですか?

必要な要素を選択する代わりに、不要な要素を削除することができます。

選択すると簡単です

[1,2,3,4,5,6].select { |n| n != 4 }

しかし、物事をより明確にする方法があります。

そのメソッドはrejectです 。

[1,2,3,4,5,6].reject { |n| n == 4 }

パフォーマンスなどの点で技術的な利点はありませんが、コードは改善されます。

RailsS​​electメソッド

Railsモデルを操作するときに混乱して、selectも使用できることを知ってほしくありません。 そこに。

あなたはそれを知っているべきです...

このselect 方法が違います!

Fruit.select(:id, :name, :color)

selectを使用する場合 ActiveRecordを使用 データベースから特定の列を要求しているモデル。

私が理解している限り、これは主にパフォーマンス上の理由で行われます。

これに関する最後の注意

Railsアプリ内で通常の配列を使用している場合は、selectを使用しています。 この記事全体で話し合った方法。

概要

配列、範囲、ハッシュなどのオブジェクトのコレクションを操作するためのRubyの最も役立つ方法の1つであるselectについて学習しました。

Ruby Selectメソッドの使用方法(例付き)

今度は、エディターを開いて使用する番です。

読んでくれてありがとう!


  1. Ruby Mapメソッドの使用方法(例付き)

    Mapは、配列、ハッシュ、範囲で使用できるRubyメソッドです。 マップの主な用途は、データを変換することです。 例 : 文字列の配列が与えられた場合、すべての文字列に目を通し、すべての文字を大文字にすることができます。 または、Userのリストがある場合 オブジェクト… 変換できます 対応するメールアドレス、電話番号、またはその他の属性のリストにそれらを追加します Userで定義 クラス。 これを行う方法を正確に見てみましょう! ルビーマップ構文 マップの構文は次のようになります: array = [a, b, c] array.map { |string| string.

  2. Linuxでwatchコマンドを使用する方法と例

    Linuxのwatchコマンドは1つのことを行います。コマンドを繰り返し、結果を繰り返し出力して、変更を監視できるようにします。使用方法は次のとおりです。 watchコマンド構文 watchコマンドの構文は次のとおりです。 watch OPTIONS COMMAND 注: オプション 以下の表のオプションのリストである必要があります。これにより、ウォッチのデフォルトの動作が変更されます。 コマンド コマンド 監視するコマンドです 繰り返し実行する必要があります。これは、出力を監視します 見る 中断されるまで実行されます(したがって、 CTRL+Cを押して終了します ) オプション 時