はじめに
Rubyの勉強をしてみようとおもい、自分の勉強と合わせてまとめてみました。
公式の 20分ではじめるRuby に沿っいます。
ターミナルを起動してirbを立ち上げる
Rubyの処理系には、入力したRubyの文を実行して結果を出力するプログラムが付属しています。
このように対話的にプログラムを実行するプログラムのことをインタプリタと言います。RubyにはIRB(IRBはInteractive Rubyの略です)が付属しているので、それを使用して実行していきます。
$ irb
irb(main):001:0>
Hello Worldを実行する
irb(main):001:0> "Hello World"
=> "Hello World"
計算をしてみる
irb(main):002:0> 5+3
=> 8
irb(main):003:0> 3*2
=> 6
irb(main):004:0> 3**2
=> 9
irb(main):005:0> Math.sqrt(9)
=> 3.0
メソッドを利用する
何度も利用する処理はメソッドとして定義して、再利用できるようにします。
ここでは、Hello World!
を出力するメソッド say_hello
について
まず、メソッドを定義するには def [メソッド名]
で定義を開始します。
irb(main):006:0> def say_hello
次に処理を記載していきます。ここでは Hello World!
を出力する処理を記載します。
irb(main):007:1> puts "Hello World!"
最後に、end
でメソッドの定義を終了します。
irb(main):008:1> end
=> :hi
以上で、メソッドの定義が完了となります。
メソッドの呼び出し
定義したメソッドを利用すには、以下のようにメソッド名を指定することで呼び出すことができます。
irb(main):009:0> hi
Hello World!
=> nil
irb(main):010:0> hi()
Hello World!
=> nil
メソッドにパラメータを渡す
メソッドにパラメータを渡す場合には以下のように定義する。
irb(main):010:0> def hi(name = "World")
irb(main):011:1> puts "Hello #{name}!"
irb(main):012:1> end
=> :hi
nameがパラメータ名となります。
name = "World"
は、メソッドの呼び出し時にパラメータを指定しなかった場合の、
デフォルト値として "World"
が指定されています。
メソッド実行時にパラメータを指定されなければデフォルト値が使用されます。
次に処理部分で puts "Hello #{name}!"
と定義されていますが、
#{name}
は変数を文字列に埋め込む方法になります。
呼び出す時は、パラメータを指定して呼び出す。
irb(main):013:0> hi "chris"
Hello chris!
=> nil
irb(main):014:0> hi("chris")
Hello chris!
=> nil
irb(main):018:0> hi
Hello World!
=> nil
クラスの定義
クラスを定義する時には、以下のように記載します。
irb(main):013:0> class Greeter
irb(main):014:1> def initialize(name = "World")
irb(main):011:2> @name = name
irb(main):012:2> end
irb(main):013:1> def say_hi
irb(main):014:2> puts "Hi #{@name}!"
irb(main):015:2> end
irb(main):016:1> def say_bye
irb(main):017:2> puts "Bye #{@name}, come back soon."
irb(main):018:2> end
irb(main):019:1> end
=> :say_bye
定義したクラスからオブジェクトを作成し使用するには以下のようにします。
irb(main):030:0> greeter = Greeter.new("Pat")
=> #<Greeter:0x00007fd15d9029d8 @name="Pat">
irb(main):031:0> greeter.say_hi
Hi Pat!
=> nil
irb(main):032:0> greeter.say_bye
Bye Pat, come back soon.
=> nil
ファイルに書いて実行してみる
クラス定義で書いたものをそのまま sample.rb
ファイルへ保存します。
#!/usr/bin/env ruby
class Greeter
def initialize(name = "World")
@name = name
end
def say_hi
puts "Hi #{@name}!"
end
def say_bye
puts "Bye #{@name}, come back soon."
end
end
if __FILE__ == $0
greeter = Greeter.new("Pat")
greeter.say_hi
greeter.say_bye
end
実行するときは以下のようにコマンドを実行します。
$ ruby sample.rb
Hi Pat!
Bye Pat, come back soon.