滴下。 3番目のドロップ(
ドロップ1 、
ドロップ2 )では、数値変数に精通し、OOPの原理について学びます。
数字と式
プログラミングでは、式は数値、演算子、および変数の組み合わせであり、コンピューターが理解すると、何らかの形で結果を生成します。 以下に例を示します。
8
2 + 3
"a" + "b" + "c"
100 - 5 * (2 - 1)
x + y
単純なコードを考慮して解析します。
x = 5
y = x * 20
x += y
puts x
x
値5を与え、
y
値
x * 20
(100)
y
設定します。 次に、
x
に
y
を追加して結果を出力します。 すべてが完全に明確で、唯一の問題は3行目で発生します。
x = x + y
と書く方が適切に思えますが、これはRubyシュガーの一部です。
x *=
yおよび
x /=
使用することもでき、
x += 1
は変数を1つ増やします。
比較演算子と条件
別のコード:
age = 22
puts "Sovsem Molodoi!" if age < 25
コンピューターは、指定された操作(それ以外の場合は単なる計算機)を実行するだけでなく、ロジックを使用して作業の方向を決定します。 コード実行の結果は予測可能です。 2行目を分析しましょう。 まず、
age < 25
よく知られている "more / less"(および
==
、
>=
、
<=
、
<=
>=
,
<=>
!=
)に注意してください
<=>
ます。 さらに、他の言語でよく知られている条件
if
ます。
then
どこで
end
ますか? 別のRubyの砂糖、実際には2行目はコードに完全に似ています:
if age < 25 then
puts "Sovsem Molodoi!"
end
条件を組み合わせることができます。 逆の効果を得るために、次の場合を
unless
、単語を使用できます。
age = 24
puts "You're NOT a teenager" unless age > 12 && age < 20
コードは明確です。 どうぞ
イテレータ
ここに私たちを待っているものがあります:
4.times do puts "Ruby" end
コードを実行してみましょう。結果は
puts
4回の実行です。 分析します。 最初に数字の4が取得され、次に
times
メソッドが適用され、Rubyのすべての数字に適用されます(メソッド?メソッドとは?このアクション-これについては後で説明します)。 メソッドにデータを渡す代わりに、
do
と
end
間でコードを渡します。
times
メソッドは、このコードを4回実行します。 いつものように、Rubyはプログラムをより快適に書くことを望んでいるため、別の安心を与えます。
do
および
end
なしの完全に類似したコード:
4.times { puts "Ruby" }
Ruby(および他のPL)でも、ループを作成するメカニズムの1つは反復子です。これは、セットのすべての要素を反復処理できるオブジェクトです。 私たちの場合、ループを設定するか、4回繰り返します。 Rubyの数値に適用可能な他のイテレーターを見てみましょう。
1.upto(5) { ... ... }
10.downto(5) { ... ... }
0.step(50, 5) { ... ... }
それぞれの目的は明確だと思います。 再びコード:
1.upto(5) { |number| puts number }
その結果、プログラムは「5つまでカウントします」-反復状態をコードに渡しました。 ループコードの先頭で、数値「1〜5」が変数
number
送信されます。
浮動小数点
確かに、以前に書かれたすべてのプログラムでは、変数を宣言する必要はなく、その型を決定する必要があることに気づきました。Rubyがこれを行います(砂糖をなめ続けます)。 分割してみましょう:
puts 10 / 3
。 結果は3です。入力数値は整数であるため、結果はそのまま残ります。 ルビーは助けたいと思ったが、成功しなかった。 彼に伝えましょう:
puts 10.0 / 3.0
。 解決策は簡単でした!
着信番号を制御できない状況に陥ることがありますが、解決策があります。
x = 10
y = 3
puts x.to_f / y.to_f
整数の場合、特別なメソッド(アクションなど)
.to_f
、それらをその場で浮動小数点数に変換します。 逆のアクション(整数部への丸め)は、
.to_i
メソッドによって実行されます。
OOPについて少し
最後のストローで、私たちはまだPLOから逃げることができたという事実について話しました。 実際、私は不誠実でした-Rubyで操作するものはすべてオブジェクトです。 すべて! これにより、言語が、値を返さないプリミティブ型およびフレーズがあるC ++およびJavaと区別されます。
他のオブジェクト指向コードと同様に、Rubyでコードを記述する場合、コード内のプロセス全体を繰り返すのではなく、主にモデルを作成します。 たとえば、料理の本用のアプリを作成する必要がある場合、ほとんどの場合、レシピのリストを作成する必要があります。 モデリングの場合、いくつかの並べ替え方法を使用して、さまざまな種類のデータを再現し、各リスト内の必要なデータの位置を同期する必要があります。 OOPは、必要なコンポーネントをモデル化するためのクラスとオブジェクトを作成するよう招待することにより、作業を容易にします。 この例では、小文字の属性
名と作成
者 、および
成分の配列の形式の属性を持つ
Recipesクラスを作成できます。
クラスの目的は、プログラムのあらゆる
ものをモデル化する
ことです。 クラスはプロトタイプであり、プロジェクト内の「名詞」の描画です:
オブジェクト 。 クラスのインスタンスまたはオブジェクト(交換可能な用語)は、これらのプロトタイプを取得して実行します。 この例では、リスト内のレシピごとにオブジェクトを作成できます。これは、
Recipesクラスのインスタンスになります。このクラスには、データが含まれ、レシピに関連する処理が行われます(たとえば、材料のリストを保持し、このリストに材料を追加するなど) )レシピの整合性を監視します(たとえば、材料の量に数字だけがある、各レシピに名前を付けるなど)-オブジェクトに対するこれらすべてのアクション、「動詞」は
メソッドです。
このドロップの始まりに戻りましょう。 はい、確かに、任意の数も本格的なオブジェクトです。 例の
4.times {puts "Ruby"}
番号4-オブジェクトは
Integer
クラスのインスタンスであり(コードでこれを宣言せず、Rubyが代わりに行います)、
times
メソッドが適用され、クラスに登録されます(再びこれを行います)表示されませんが、暗示されています)。 さらに、式
x = 1 + x
ユニットはオブジェクトであり、
+
はそのメソッドです! したがって、OOPの原理を知らなくても、私たちはすでに気づかずに、オブジェクト指向プログラミングの「犠牲者」になりました:)
十分-ドロップは大きく、大きかったので、RubyでのOOPの実装を真剣に進めるために必要なすべてのものが得られました。
いつものように、私はあなたのコメント、フィードバック、コメントを楽しみにしています!
私は4番目のドロップで少し逃しました、そして、それは他の記事の下に埋められました-しかし、それはそこにあります;
ここに!