1. ホーム
  2. スクリプト・コラム
  3. ルビートピックス

Rubyの基本構文

2022-02-03 15:32:46

文字列オブジェクトを作成する方法はいくつかありますが、おそらく最も一般的なのは文字列リテラルを使用する方法でしょう。この2つの形式の違いは、Rubyではリテラルを作成する際に文字列をどの程度扱うかが異なるということです。ごくまれな例外はありますが。文字列リテラルに入力された内容は、その文字列の値を構成します。

二重引用符で囲まれた文字列は、Rubyではもう少し扱いやすくなっています。まず、バックスラッシュで始まるシーケンスを探し、2値で置き換えます。このうち最も一般的なのは「◎」で、これは復帰改行で置き換えられます。キャリッジリターン改行を含む文字列が出力された場合、" \n" は強制的に改行されます。

puts "And good night, \nGrandma"



出力結果です。

And good night,

Grandma




Rubyが二重引用符で囲まれた文字列に対して行う第二のことは、文字列内の式の補間で、#{expression}の列を"expression"の値で置き換えることです。この方法で前のメソッドを上書きすることができます。

def say_goodnight(name)

 result = "Good night,#{name}"

 return result

end

puts say_goodnight('Pa')



出力結果です。

 Good night, Pa



Rubyがこの文字列オブジェクトを構築するとき、nameの現在の値を見つけて、文字列の中で置き換えます。構造体#{...}の中には、任意に複雑な式を入れることができます。すべての文字列に定義されているcapitalizeメソッドはここで呼ばれ、引数の最初の文字を大文字に変えて出力されます。

def say_goodnight(name)

 result = "Good night,#{name.capitalize}"

 return result

end

puts say_goodnight('uncle')



出力結果です。

Good night, Uncle



便宜上、式がグローバルなインスタンス変数やクラス変数だけであれば、括弧を用意する必要はありません。

$greeting = "Hello" #$greeting is a global variable

@name = "Prudence" #@name is an instance variable

puts "#$greeting,#@name"



出力結果です。

Hello,Prudence



Rubyのメソッドが返す値は、最後に評価された式の値なので、この一時変数とreturn文は両方とも削除することができます。

def say_goodnight(name)

 "Good night,#{name}"

end

puts say_goodnight('Ma')



出力結果です。

Good night, Ma



Rubyでは、名前が何に使われるかを区別するために命名規則があります。名前の最初の文字が、その名前がどのように使われるかを示します。ローカル変数、メソッドパラメータ、メソッド名はすべて小文字かアンダースコアで始まらなければなりません。グローバル変数はドル記号 ($) で始まり、インスタンス変数は "at" (@) 記号で始まります。クラス変数は、2つの "at" (@@) 記号で始まります。最後に、クラス名、モジュール名、定数はすべて大文字で始めなければなりません。

上記で指定された最初の文字以降には、文字、数字、アンダースコアを自由に組み合わせることができます(ただし、@の後に続く記号は数字にできません)。ただし、慣例として、複数の単語を含むインスタンス変数名は単語間をアンダースコアでつなぎ、複数の単語を含むクラス変数名は大文字小文字の混在(それぞれ頭文字を1つずつ大文字に)となっています。メソッド名には? と!、=の文字で終わります。