Flip Flop Operator in Ruby[Rubyでのトリガ操作]
1935 ワード
翻訳はFlip Flop Operator in Ruby redditで見たもので、これまで見たことがないので、一緒に勉強します~E文がよくないのでご指導ください
トリガオペレータは奇妙なruby特性であり、多くの人がその存在を意識していない.この特性はperlスタイルから受け継がれているが、ほとんど使われていない.この文章では、トリガオペレータ[flip-flop operators]とは何かを見て、彼がどのように使用しているかを学びます.
フリップフロップオペレータ[flip-flop operators]とは?
トリガオペレータとrangeオペレータ(.)同様に、条件はオペレータの両方に宣言されます.次のようになります.最初の式がtrueになるまで、式全体の結果はfalseであった. 以上の条件が成立すると、2番目の式がtrueになる前に、式の結果はtrueとなる.
上記の例では、x=5以降x=10の前に式が成立するので、5から10という数字が出力されます.
その他の例
もう1つの例を挙げて、オペレータのより多くの動作を見てみましょう.インデントマークと逆インデントマークのあるファイルを解析すると想像してみてください.インデント記号に触れるたびにインデントが開き、インデント記号に触れるとインデントがオフになります.
この例では、テキストを処理してみましょう.
出力後、次のように見えます.
この例では、インデントの状態を追跡する必要があります.トリガオペレータの処理により、目の前が明るくなります.
このオペレータは少し役に立ちました.「indent」が含まれている場所から、「dedent」に出会った場所まで、各行の開始に2つのスペースを追加することができます.
このプロパティはrubyから削除されますか?
この特性を除去するissueが提案されている.ruby 2.0がリリースされる前に、Matzはこの特性を削除するにはruby 3まで待つべきだと言った.0.
Under the current plan, I am not going to remove flip-flop from 2.0, since we are not going to made incompatible changes anytime soon. We have to wait until 3.0. (–Matz)
私はこのような文法の強い依存者ではなく、私のコードではほとんど使いません.この特性が将来除去されると、あまりエラーは発生しません.
ここ数年、この問題ではあまり活動していないため、ある日この特性が除去されるとは確信できません.しかし、この文法を理解することで、このコードを見たとき、不思議ではありません.
外部リンク
Feature #5400 - Remove flip-flops in 2.0 - the discussion on the Ruby issue tracker
トリガオペレータは奇妙なruby特性であり、多くの人がその存在を意識していない.この特性はperlスタイルから受け継がれているが、ほとんど使われていない.この文章では、トリガオペレータ[flip-flop operators]とは何かを見て、彼がどのように使用しているかを学びます.
フリップフロップオペレータ[flip-flop operators]とは?
トリガオペレータとrangeオペレータ(.)同様に、条件はオペレータの両方に宣言されます.次のようになります.
(1..20).each do |x|
puts x if x == 5 .. x == 10
end
#=>
5
6
7
8
9
10
上記の例では、x=5以降x=10の前に式が成立するので、5から10という数字が出力されます.
その他の例
もう1つの例を挙げて、オペレータのより多くの動作を見てみましょう.インデントマークと逆インデントマークのあるファイルを解析すると想像してみてください.インデント記号に触れるたびにインデントが開き、インデント記号に触れるとインデントがオフになります.
この例では、テキストを処理してみましょう.
zero indentation
indent
inside block
dedent
after the block
indent
another block
dedent
end of file
出力後、次のように見えます.
zero indentation
indent
inside block
dedent
after the block
indent
another block
dedent
end of file
この例では、インデントの状態を追跡する必要があります.トリガオペレータの処理により、目の前が明るくなります.
lines = File.readlines('somefile')
lines.each do |line|
if line =~ /^indent/ .. line =~ /^dedent/
puts " " + line
else
puts line
end
end
このオペレータは少し役に立ちました.「indent」が含まれている場所から、「dedent」に出会った場所まで、各行の開始に2つのスペースを追加することができます.
このプロパティはrubyから削除されますか?
この特性を除去するissueが提案されている.ruby 2.0がリリースされる前に、Matzはこの特性を削除するにはruby 3まで待つべきだと言った.0.
Under the current plan, I am not going to remove flip-flop from 2.0, since we are not going to made incompatible changes anytime soon. We have to wait until 3.0. (–Matz)
私はこのような文法の強い依存者ではなく、私のコードではほとんど使いません.この特性が将来除去されると、あまりエラーは発生しません.
ここ数年、この問題ではあまり活動していないため、ある日この特性が除去されるとは確信できません.しかし、この文法を理解することで、このコードを見たとき、不思議ではありません.
外部リンク
Feature #5400 - Remove flip-flops in 2.0 - the discussion on the Ruby issue tracker