さらなる高みへ -higher ground -

プログラミング学習の定着を狙いとしたアウトプット(独り言)をしてみるブログ

Rubyの基本概念② -文字列・数値・メソッド-

文字列・数値・メソッドについて

Rubyでアプリケーションを作成する前に必要な基礎知識として、以下の3つの基本事項を理解しておく。

  • 文字列
  • 数値
  • メソッド

文字列オブジェクト

文字列オブジェクトとは、文字を表現するオブジェクトである。
通常「文字列」と呼ばれる。

文字列を生成するには、文字を"(ダブルクォテーション)または'(シングルクォテーション)で囲む。

"This is string." 'This is string, too.' This is not string. # Error

3つ目の黄色く表示されていないのは、文字を""または''で囲っていないため文字列として認識されず、エラーとなっている。

数値オブジェクト

続いて数値オブジェクトである。
数値オブジェクトを生成するには文字列のときのような「 " 」や「 ' 」を記述する必要はない。
ただ単に数字を記述するだけで生成可能である。

<数値オブジェクトを使った数値の表し方の例>

10   # 整数
3.14 # 小数
-10  # 負の値
puts -3.14 # 数値も出力できる

 メソッド

メソッドとはプログラミングにおける何らかの処理をする命令群のことである。
例えば、「ターミナルにオブジェクトを出力する」という処理を実行するメソッドがputsになる。
メソッド名をプログラム中に記述することで、そのメソッドの処理を行うことができる。

また、オブジェクトごとに、利用できるメソッドが決まっており、例えばlengthメソッドは文字列オブジェクトなどが使えるメソッドである。

つまり、オブジェクトはメソッドと呼ばれる処理によって自身の形を変えることができるというわけだ。
Rubyでは、オブジェクトごとにそれぞれ利用できるメソッドが定義されている。

putsメソッド

puts(プッツ)というメソッドに対して文字列などのオブジェクトを右に記述すると、そのオブジェクトが文字としてターミナル上に出力される。
今回はputsのあとに"Hello World"という文字列を指定しているので画面上にHello Worldと表示される。

lengthメソッド

length(レングス)メソッドは文字列が利用できるメソッドで、文字列の文字の数を数えてくれる。
メソッドを利用するには、以下のようにオブジェクトに対してメソッド名(length)を.(ドット)で繋ぐ。

2.4.0 :001 > "Hello World".length # 文字列の文字数を返す =>11

上記の"Hello World".lengthは、一つの式として見ることも出来る。
上の例で=>の後に表示されているのは、「Hello World」の文字数11である。

この結果を説明する時、「lengthメソッドは返り値として数値オブジェクトの11を返した」という表現をする。

返り値

返り値とは、オブジェクトやメソッドが処理された後の最終的な値のことであり、「戻り値」とも言う。
Rubyのオブジェクト自体、またはメソッドを利用した式には、全て返り値がある

なお、メソッドとその返り値はプログラムでは非常に頻繁に使用するため、学習初期に概念としての理解が重要である。

文字列と数値の連結について

例えば下記のようなコードを打ったとする。

  2.4.0 :001 > puts "i am " + 20 + " years old."   #error
  TypeError: no implicit conversion of Fixnum into String

エラーメッセージが出ているのは「文字列」と「数値」は別のオブジェクトなので、連結することができないためである。
そこで、to_sメソッドを利用して数値である20を文字列に変換することが可能となる。

to_sメソッド

数値オブジェクトのメソッドで、数値オブジェクトを文字列に変換してくれる。

  2.4.0 :001 > 20.to_s        #数値 20 にto_sメソッドをつけて実行
  => "20"

to_sメソッドによって、文字列"20"が返り値となっている。

先ほどの"i am 20 years old."を表示するには、

2.4.0 :001 > puts "I am " + 20.to_s + " years old."  #to_sで数値を文字列に変換し、連結
I am 20 years old.                                   #続けてこのように表示されれば成功
=>nil

という感じである。