一緒にRubyを征服します! 第七のドロップ

このドロップでは、私たちが調べたすべてのトピックをもう一度調べて、失われた興味深いものを探してそれらを掘り下げます。



注意! これがRubyブログに投稿された最後のストローです! 過去(1、2、3、4、5、6)はすべて、既に新しいStartup Programmerブログに載っています 。 このブログは、初心者や、場合によっては最初から段階的に学習したい、または価値のあるプログラミング言語を習得したいと思っている「シーズンのある」プログラマーを対象としています。 ドロップの追跡がさらに簡単になりました!





入力と検査



puts "What is your name?"

STDOUT.flush

chompname = gets.chomp

puts "Again, what is your name?"

name = gets

puts "Hello, " + name

puts "Hi, " + chompname

puts 'But name = ' + name.inspect + ' and chompname = ' + chompname.inspect








STDOUT



は、標準出力チャネルを示す標準グローバル定数です。 flush



メソッドは、Rubyの内部I / Oバッファー内のすべてのデータをフラッシュします。 このコード行の使用はオプションですが、推奨されています。 すべての定数は大文字で始める必要があることに注意してください。



gets



は、1行の入力を受け取り、それを変数に渡します。 chomp



String



クラスのメソッドです。 同じ結果が得られるという事実にもかかわらず、 gets



は文字列と\n



返すことを覚えておく必要gets



ますが、 chomp



はこの\n



削除します(メソッドはキャリッジリターン\r



\r\n



組み合わせも削除します)。



これは、 inspect



メソッドを使用して簡単に実証できますinspect



メソッドの役割は、変数、クラス、一般的にはRubyオブジェクトを「調べる」ことです。



メソッドの句読点



メソッドの最後にある感嘆符は、結果を返すだけでなく、適用先のオブジェクトも変更することを意味します(これはいわゆる「危険な」メソッドです)。 strip



メソッドは、行末のスペースを削除します。



 string = 'Bring, bring ' a = string.strip! puts string puts a
      
      







疑問符メソッド、いわゆる述語true



またはfalse



のみを返しfalse



。たとえば、配列メソッドはempty?



配列に要素がない場合はtrueを返します。



a = []

puts "empty" if a.empty?








方法はありany?



逆に、要素が配列に存在する場合はtrue



を返し、 nonzero?



を返しtrue



nonzero?



Numeric



クラスで定義されたNumeric



は、呼び出されたNumeric



nil



場合はnil



を返し、それ以外の場合はこの数値を返します。



Use%w



単語の配列を作成するのは大きな頭痛の種になることもありますが、Rubyではこれを単純化しています: %w{}



は必要なことを行います:



pets1 = [ 'cat', 'dog', 'snake', 'hamster', 'rat' ]

pets2 = %w{ cat dog snake hamster rat } # pets1 = pets2








条件分岐



条件式を使用すると、コード実行の方向を制御できると既に述べました。 これらの表現を繰り返し、新しい表現を学びます。



もし


 a = 7 if a == 4 a = 9 end
      
      







しかし、Rubyがタスクを単純化していなければ、RubyはRubyになっていなかったでしょう。 完全に類似したサイクル:



a = 7

a = 9 if a == 4








if-elsif-else


条件の例:



 a = 7 if a == 4 a = 9 else if a == 7 a = 10 end end
      
      







elsif



は、この条件を可能な限り単純化し、以下を取得します。



 a = 7 if a == 4 a = 9 elsif a == 7 a = 10 end
      
      







トリプル演算子


a = 7

plus_minus = '+'

print "#{a} #{plus_minus} 2 = " + (plus_minus == '+' ? (a+2).to_s : (a-2).to_s)








デザイン[? (expr) : (expr)]



[? (expr) : (expr)]



は三項演算子(Rubyで唯一のトリプル)と呼ばれ、式を計算して結果を返します。 このようなコードは読みにくいため、2次タスクにのみ使用することをお勧めします。 最初のオペランドは前にカウントされ?



値がfalse



ではなくnil



でない場合、2番目のオペランドの値は式の値になり、そうでない場合は3番目( :



後)になり:







ながら



while



、Rubyの構文は、他のPLのif



およびwhile



と似ていif







 a = 0 while a < 5 puts a.to_s a += 1 end
      
      







いつものように、ループは1行に配置できます: <......> while <>







記号



コードでは、 Symbol



は変数名のように見えます。たとえば、::アクションで始まります。 Symbol



は、Rubyで作成できる最も単純なオブジェクトです。名前とID



のみがありID



。 シンボルは文字列よりも効率的で生産的です-シンボルの名前はプログラム全体で1つのオブジェクトを指し、同じ内容の2行は異なるオブジェクトです-これにより時間とメモリが節約されます。



 ruby_know = :yes if ruby_know == :yes puts "You're a good guy!" else puts 'Learn Ruby!' end
      
      







この例では、 :yes



- symbol



、値またはオブジェクトを含まず、代わりにコードの定数名として使用されます。 冷静に置き換えることができ:yes



を文字列"yes"



と、結果は同じになりますが、プログラムの生産性は低下します。 Kaneのすばらしい記事「文字と文字列の違い」でトピックの詳細を学ぶことができます



連想配列



連想配列(以降、ハッシュ)は、オブジェクトの順序付けられたセットも含むため、配列に似ています。 ただし、配列では、オブジェクトは数字でインデックス付けされ、ハッシュでは、インデックスは任意のオブジェクトにできます。 簡単な例:



 h = {'dog' => 'sobaka', 'cat' => 'koshka', 'donkey' => 'oslik'} puts h.length # 3 puts h['dog'] # 'sobaka' puts h # catkoshkadonkeyoslikdogsobaka
      
      







ご覧のとおり、ハッシュ要素は順序付けられていないため、ハッシュはリストやキューなどには適していません。



文字列を引用符で囲んだい場所ならどこでも、 symbol



使用を考えてください:



users = Hash.new

users[:nickname] = 'MaxElc'

users[:language] = 'Russian'

puts users[:nickname] #MaxElc








エピローグ



Rubyでのさらなる開発に必要なもう1つの小さくて興味深いデータ。 コメントを歓迎します!




All Articles