【Ruby】Hello World(文字列出力)

はじめは簡単な文字列出力から。
Hello World」と表示してみます。

# putsメソッドは最後に改行が入る
puts "1:Hello World"
# printメソッドは最後に改行が入らないので改行させるためには"\n"をつける
print "2:Hello World\n"

コメントは#で始まり、その行の最後までです。
標準出力に出力するには、putsメソッドまたはprintメソッドが利用できます。
2つのメソッドの違いは、コメントにあるように最後に改行が付くかどうかです。

上記プログラムの実行結果は以下のようになります。

1:Hello World
2:Hello World

文字列リテラルは、シングルクオートまたはダブルクオートで囲った文字列です。シングルクオートで囲った場合は囲まれた文字列そのままが文字列の値となります。ダブルクオートで囲った場合は「\n」「\t」などのエスケープシーケンスを解釈します。

# シングルクオートで囲むと\nがそのまま出力される
print '3:Hello World\n'

上記プログラムの実行結果は以下のようになります。

3:Hello World\n

次に、変数を使ってみます。Rubyでは型を指定した変数宣言は不要です。いきなり変数に値を代入します。正確に言うと、変数は単なるオブジェクトへのリファレンスで、オブジェクトは変数によって参照されます。

# Stringオブジェクトを参照する変数
words = "4:Hello World"
puts words

putsメソッドの引数に変数を指定すれば変数が参照する文字列を出力することができます。

上記プログラムの実行結果は以下のようになります。

4:Hello World

今度は複数の変数を使って一度に出力してみます。

word1 = "Hello"
word2 = "World"
# ダブルクオートで囲んだ文字列中で変数が展開される
puts "5:#{word1} #{word2}"

ダブルクオートで囲った文字列はエスケープシーケンスの解釈だけでなく、文字列中に#{式}というシーケンスがあるとその式の値で置き換えます。

上記プログラムの実行結果は以下のようになります。

5:Hello World

文字列を連結して出力してみます。

word1 = "Hello"
word2 = "World"
# Stringオブジェクトを連結
puts "6:" + word1 + " " + word2
puts "7:".+((word1.+(" ")).+(word2))

「+」を用いて文字列を連結することができます。実はこの「+」はStringクラスのメソッドです。そのため、上記プログラムの5行目のような記述が成り立ちます。

上記プログラムの実行結果は以下のようになります。

6:Hello World
7:Hello World

ちなみにJavaだと以下のようなプログラムになるでしょう。

public class Hello {
	public static void main(String[] args) {
		// System.out.printlnは最後に改行が入る
		System.out.println("1:Hello World");
		// System.out.printは最後に改行が入らないので改行させるためには"\n"をつける
		System.out.print("2:Hello World\n");

		// Stringオブジェクトを参照する変数
		String words = "4:Hello World";
		System.out.println(words);

		String word1 = "Hello";
		String word2 = "World";
		// Stringオブジェクトを連結
		System.out.println("6:" + word1 + " " + word2);
		System.out.println("7:".concat(word1).concat(" ").concat(word2));
	}
}