Ruby Next&Breakキーワードを理解する
次へなどのキーワード &休憩 はRubyプログラミング言語の一部であるため、Rubyを完全に理解したい場合は、それらがどのように機能するかを知る必要があります。
それらは何に使用されますか?
さて、Rubyにはあらゆる種類のループがあります。
いいね :
- ながら
- まで
- それぞれ
ループを作成するときは、反復をスキップするか、ループを早期に終了することをお勧めします。
ここでnext
&break
キーワードが入ります!
それらの使い方を見てみましょう。
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 -> 0
、z -> a
)、左側の次の文字をインクリメントします。
概要
next
について学習しました &break
Rubyのキーワード、反復をスキップしたり、ループを早期に停止したりするのにどのように役立つか。
今度はRubyスキルを練習する番です🙂
読んでくれてありがとう!
-
プット、プリント、Pの違いを理解する
Rubyで何かを印刷する方法はたくさんあります。 これが最も便利です : プット 印刷 p しかし、これらはどのように異なりますか? そしていつどちらを使うべきか ? それがこの記事で学ぶことです! 改行なしで印刷する方法 ユーザーが見られるように画面に何かを印刷する場合は、通常、putsを使用します 。 このように : puts Hello there! Putsは、メッセージを使用するたびに、メッセージの最後に新しい行を自動的に追加します。 改行が必要ない場合は、printを使用してください 。 例 : print 123 次回printするとき 最後の
-
Rubyのデコレータデザインパターン
デコレータのデザインパターンは何ですか? そして、Rubyプロジェクトでこのパターンをどのように使用できますか? デコレータデザインパターンは、新機能を追加することでオブジェクトを強化するのに役立ちます クラスを変更せずにそれに。 例を見てみましょう! ロギングとパフォーマンス この例では、rest-clientのようなgemを使用してHTTPリクエストを作成しています。 次のようになります: require restclient data = RestClient.get(www.rubyguides.com) 今 : 一部のリクエストにログを追加したいが、RestCli