Rubyへようこそ!他の言語の経験がある皆さんなら、Rubyの柔軟で読みやすい構文にすぐに慣れるでしょう。この章では、Rubyの基本的な構成要素を見ていきます。
Rubyの変数は型宣言を必要としませんが、変数の「スコープ(可視範囲)」は名前の付け方によって決まります。これは他の言語と大きく異なる点です。
my_var
_ で始まります。定義されたスコープ(メソッド定義、ブロック、ファイルのトップレベルなど)でのみ有効です。@my_var
@ で始まります。特定のオブジェクトのインスタンスに属し、そのオブジェクトのメソッド内からアクセスできます。(クラスの章で詳述します)@@my_var
@@ で始まります。クラス全体とそのサブクラスで共有されます。(クラスの章で詳述します)$my_var
$ で始まります。プログラムのどこからでもアクセス可能ですが、グローバルな状態を持つため、使用は最小限に抑えるべきです。MY_CONSTANT
Rubyには多くの組み込みデータ型がありますが、まずは基本的なものを押さえましょう。
1, 100, -5, 1_000_000 ( _ は読みやすさのためのもので、無視されます)1.5, 3.14, -0.001"Hello", 'World'true, falsenil (何も存在しないことを示す唯一の値)[1, "apple", true]{"key1" => "value1", :key2 => "value2"}:my_symbol (後述します)Rubyでは、これらすべてが「オブジェクト」であり、メソッドを持っています。
Rubyの条件分岐(if文など)において、偽 (falsey) として扱われるのは nil と false の2つだけです。
これは非常に重要です。C言語やJavaScriptなどの 0、空文字列 ""、空配列 [] が偽として扱われる言語とは異なります。Rubyでは、これらはすべて真 (truthy) として扱われます。
ruby truthy_check.rbシンボルは、他の言語の経験者にとってRubyの最初の「つまずきポイント」かもしれません。
シンボルはコロン ( : ) で始まります(例: :name, :status)。
文字列 (String) とシンボル (Symbol) の違い:
"hello"[0] = "H" は可能ですが、 :hello に対してこのような操作はできません。主な用途:
user = { name: "Alice", age: 30 } (これは { :name => "Alice", :age => 30 } のシンタックスシュガーです)status = :pending, status = :completed のように、固定された「名前」や「状態」を表すのに使われます。シンボルは「名前」そのもの、文字列は「データ」そのもの、と考えると分かりやすいかもしれません。
Rubyでは、メソッドを呼び出す際の括弧 () を省略できます(ただし、曖昧さが生じない場合に限ります)。
括弧を省略するとコードが読みやすくなる場合がありますが、メソッドチェーンが続く場合や、引数が複雑な場合は括弧を付けた方が明確です。
Rubyの文字列は強力で、特に「式展開」は頻繁に使われます。
'...'): ほぼそのまま文字列として扱います。\n(改行)などのエスケープシーケンスや式展開は解釈されません(\' と \\ を除く)。"..."): エスケープシーケンス(\n, \t など)を解釈し、式展開 (Interpolation) を行います。式展開は #{...} という構文を使い、... の部分でRubyのコードを実行し、その結果を文字列に埋め込みます。
@, @@, $) によってスコープが決まる。
false と nil のみが偽 (falsey) であり、0 や "" も真 (truthy) として扱われる。:name) はイミュータブルで一意な「名前」を表し、主にハッシュのキーや識別子として使われる。"...") は式展開 #{...} をサポートする。ユーザーの名前(name)と年齢(age)を変数に代入してください。
次に、"#{...}"(式展開)を使い、「(名前)さんの年齢は(年齢)歳です。5年後は(5年後の年齢)歳になります。」という文字列を出力するスクリプトを作成してください。
ruby practice2_1.rb