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

Rubyの使い方Any、All、None&One

今日は、要素の配列、ハッシュ、またはEnumerableモジュールを含むその他のオブジェクトに対して条件ステートメントをチェックするのに役立つ4つのEnumerableメソッドについて学習します。

Rubyの使い方Any、All、None&One

これらの4つのメソッドは、trueのいずれかを返します またはfalse

コンテンツ

  • 1RubyAllメソッド
  • 2つのすべての配列と空の配列
  • 3Rubyなしメソッド
  • 4 Ruby Any Method
  • 5RubyOneメソッド
  • 6つの新しいRuby2.5機能
  • 7まとめ
    • 7.1関連

やってみましょう!

ルビーオールメソッド

配列内のすべての文字列が特定のサイズであるかどうかを確認する場合。

これを行うことができます

def all_words_have_specific_size?(words)
  return false if words.empty?

  words.each do |str|
    return false unless str.size == 5
  end

  true
end

words = ["bacon", "orange", "apple"]

all_words_have_specific_size?(words)
# false
でない限り、falseを返します。

すべての文字列をチェックします。サイズが希望どおりでない場合は、falseを返します。 それ以外の場合は、trueを返します 最後に。

これは、このようなものの多くのコードです。

これを毎回設定する必要があると想像してみてください この種のチェックを行いたいのです。

大変な作業です!

ここで気にするのはこれだけです:

str.size == 5

これが確認している状態です 。

これを行うためのより良い方法はありますか?

はい!

all?を使用します あなたのためにすべての大変な仕事をする方法。

方法は次のとおりです

strings.all? { |str| str.size == 5 }

それだけです。

すべてのアレイと空のアレイ

知っておくべきことの1つ:

このall? メソッドはtrueを返します 空の配列で呼び出す場合。

[].all? { |s| s.size == 1 }
# true

説明

falseの要素はないため その場合、すべての要素はtrueである必要があります 。

これがこの背後にある論理です。

ルビーなしメソッド

all?の逆が必要な場合 、none?を使用します

ここに例があります

strings.none? { |str| str.size == 5 }

これはtrueを返します どの文字列も条件に一致しない場合、またはfalse 1つ以上が一致する場合。

ifステートメントがない限りのようです。

Ruby任意の方法

いずれかの要素が条件に一致するかどうかを知りたいですか?

any?を使用できます メソッド!

このように

[1,2,3,4,5].any?
# true

この特定の例では、any? empty?の逆のように機能します 。しかし、それがすべての状況で機能するとは限りません。

これは質問をしているからです

「この配列内にTRUTHY要素はありますか?」

配列に真実でないもののみが含まれている場合(nil / falsefalseを取得する値 、しかし、配列は実際には空ではありません。

[nil].any?
# false

このメソッドにブロックを渡すこともできます:

[1,2,3].any? { |n| n > 0 }
# true

これにより、n > 0かどうかがチェックされます trueです 少なくとも1つの要素の場合。

ルビーワンメソッド

正確に1つの要素がtrueを返すかどうかを確認できます one?で メソッド。

ここに例があります

["a", 1, {}].one? { |obj| obj.kind_of?(Hash) }
# true

これをブロックなしで使用して、配列に1つの真の値(false以外のもの)が含まれているかどうかを確認できます。 / nil

["a"].one?
# true

[].one?
# false

[nil].one?
# false

size == 1に固執します より明確だからですone?に慣れていなくても、誰もが理解するでしょう。 方法、これはそれほど一般的ではありません。

新しいRuby2.5機能

Ruby 2.5以降、これら4つのメソッド(any? / all? / none? / one? )また、grepの引数のように機能する引数を取ります。

これが私の意味です

[:orange, :apple, :coconut].any?(Symbol)
# true

[1,2,3].all?(1..10)
# true

これは、クラス、正規表現、または範囲を確認する場合のちょっとしたショートカットです。

概要

あなたはあなたに多くの仕事を節約することができる4つの素晴らしいRubyメソッドについて学びました!これらのメソッドは、trueのいずれかのみを返します またはfalse

これらの方法をこれまで使用したことがない場合は、今すぐ試してみませんか?

この記事が役に立ったら、共有してください。


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

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

  2. RubyでStructとOpenStructを使用する方法

    Rubyの構造体とは何ですか? 構造体は組み込みのRubyクラスであり、値オブジェクトを生成する新しいクラスを作成するために使用されます。値オブジェクトは、関連する属性を一緒に格納するために使用されます。 ここに例があります : Point 2つの座標(x &y 。 このデータはさまざまな方法で表すことができます。 いいね : 配列[10, 20] ハッシュ{ x: 10, y: 10 } オブジェクトPoint.new(10, 20) 複数のPointを使用する場合 、オブジェクトアプローチを使用することをお勧めします。 しかし… これら2つの値を一緒に格納するた