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

Ruby Next&Breakキーワードを理解する

次へなどのキーワード &休憩 はRubyプログラミング言語の一部であるため、Rubyを完全に理解したい場合は、それらがどのように機能するかを知る必要があります。

それらは何に使用されますか?

さて、Rubyにはあらゆる種類のループがあります。

いいね

  • ながら
  • まで
  • それぞれ

ループを作成するときは、反復をスキップするか、ループを早期に終了することをお勧めします。

ここでnextbreak キーワードが入ります!

それらの使い方を見てみましょう。

Ruby Nextキーワード(反復をスキップ)

next キーワードを使用すると、1回の反復をスキップできます。

文字列を数えているとしましょう。

また、何らかの理由で、サイズが4の文字列をカウントしたくない場合もあります。

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

strings = ["one", "two", "four", "five"]

strings.inject(0) do |sum, str|
  next if str.size == 4

  sum + str.size
end

# nil
の場合

このコードは機能しません。

ゼロになります。

なぜですか?

next nilを返します デフォルトでは、returnを呼び出すのと同じです 戻り値なし。

ご存知かもしれませんが…

injectの使用 ブロックによって返された最後の値を取り、それが次の反復の最初の引数になります。

つまり、sum nilになります 。

解決策は?

nextを変更します これへの行:

next sum if str.size == 4

これにより、next sumの値を返します 。

パフォーマンスが最優先事項ではない場合(多くの場合そうではありません)、nextを使用する必要がないように、アレイを事前にフィルタリングできます。 。

またはさらに良い

strings = ["one", "two", "four", "five"]

strings.inject(0) { |sum, str| str.size == 4 ? sum : sum + str.size }

# 6

これは三項演算子です。

Rubyには、nextを使用する必要がないようにするための十分なツールが用意されていると思います。 。

それらを使用してください!

ルビーブレイクキーワード(ループを早期に終了)

break キーワードはnextのようなものです 、ただし、1回の反復をスキップするのではなく、ループを終了して値を返します。

ループからの早期復帰に使用できます。

returnを使用してみませんか キーワード?ループだけでなく、現在のメソッドを終了するためです。

または、無条件のループを終了します。

このように

count = 0

loop do
  break if count == 10

  puts count

  count += 1
end

これにより、0から9までの数字のリストが出力されます。

より良い代替策は、timesを使用することです。 メソッド、upto メソッド、または範囲と各メソッド。

0.upto(9).each(&method(:puts))

この&method(:puts) putsを呼び出すための単なるショートカットです 番号ごとに。

混乱の回避:次はRubyメソッドとして

キーワードとして存在するからといって、メソッド名として使用できないわけではありません。

Rubyのいくつかのクラスはnextを実装します 方法として。

Stringのように &Integer

1.next
# 2

結果は驚くべきことではありませんよね?

これはどうですか

"zz".next
# "aaa"

それはもう少し面白いです!

これはどのように機能しますか?

ええと、すべてのクラスはそのバージョンのnextを実装しています 、次の値のロジックが含まれています。

整数の場合 、これは+1です 。

文字列の場合 、最後の文字を1つ増やします(アルファベットの次の文字/ +1 数値の場合)、キャリーオーバーがある場合(9 -> 0z -> a )、左側の次の文字をインクリメントします。

概要

nextについて学習しました &break Rubyのキーワード、反復をスキップしたり、ループを早期に停止したりするのにどのように役立つか。

今度はRubyスキルを練習する番です🙂

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


  1. プット、プリント、Pの違いを理解する

    Rubyで何かを印刷する方法はたくさんあります。 これが最も便利です : プット 印刷 p しかし、これらはどのように異なりますか? そしていつどちらを使うべきか ? それがこの記事で学ぶことです! 改行なしで印刷する方法 ユーザーが見られるように画面に何かを印刷する場合は、通常、putsを使用します 。 このように : puts Hello there! Putsは、メッセージを使用するたびに、メッセージの最後に新しい行を自動的に追加します。 改行が必要ない場合は、printを使用してください 。 例 : print 123 次回printするとき 最後の

  2. Rubyのデコレータデザインパターン

    デコレータのデザインパターンは何ですか? そして、Rubyプロジェクトでこのパターンをどのように使用できますか? デコレータデザインパターンは、新機能を追加することでオブジェクトを強化するのに役立ちます クラスを変更せずにそれに。 例を見てみましょう! ロギングとパフォーマンス この例では、rest-clientのようなgemを使用してHTTPリクエストを作成しています。 次のようになります: require restclient data = RestClient.get(www.rubyguides.com) 今 : 一部のリクエストにログを追加したいが、RestCli