Rubyの種類
・JRuby
Javaで実装されたRuby実装で、Javaのライブラリを利用することが可能。
・MacRuby
Mac上のCocoaフレームワークなどをシームレスに扱えるように変更を加えられたRuby実装
・Rubinius
Rubyによって実装されたRuby実装
・mruby
まつもとゆきひろ氏主導で開発を進められている「組み込み用途向けの軽量版Ruby」
・RubyMotion
RubyでiPhoneアプリ(ネイティブアプリ)を作成できる
etc
JavaにはGroovyという言語がある。
Rubyのコミュニティ
・メーリングリスト
・Ruby会議
・地域Ruby会議
・勉強会
In [1]:
def hello(names)
names.each do |name|
puts "HELLO, #{name.upcase}"
end
end
rubies = ['MRI', 'jruby', 'rubinius']
# トップレベル
# トップレベルで定義されたメソッドは
# グローバルなサブルーチンのように使用することができる
# ・メソッド呼び出しの際、レシーバを記述しない
# ・いわゆる関数のように、どこからでもグローバルに呼び出すことができる(ごく一部を除く)
hello(rubies)
Out[1]:
putsでは、ダブルクォートとシングルクォートで違いある。
ダブルクォートを使った文字列の中に「#{...}」で囲んだRubyのコードを埋め込むことができる。
→ 「式展開」という
In [4]:
def hello(names)
names.each do |name|
puts 'HELLO, #{name.upcase}'
end
end
rubies = ['MRI', 'jruby', 'rubinius']
hello(rubies)
Out[4]:
メソッド呼び出し時の括弧は省略することができる。
例:puts "HELLO, #{name.upcase}"
メソッド呼び出し
name.upcase
レシーバ.メソッド名
ブロック
do 〜 end
ブロックは手続きをひとまとめにしたもの
このようなメソッドを「ブロック付きメソッド呼び出し」と言う。
In [ ]:
# 例
File.open 'README.md' do |file|
puts file.read
end
In [ ]:
# こういう書き方もできる
names.each { |name| puts 'HELLO, #{name.upcase}' }
In [5]:
def add(a, b)
# メソッドの戻り値は
# そのメソッドの中で最後に評価された式の値となる。
a + b
end
add(1, 1)
Out[5]:
In [6]:
def add(a, b)
return a + b
# 途中でリターンすれば、それ以降の処理はされない。
puts '表示されるか?!'
end
add(1, 1)
Out[6]:
In [7]:
name = 'ruby'; puts(name.upcase)
# 実際にこのような書き方をすることはない
In [ ]:
# マルチコード
# coding: utf-8
# 上記はマジックコメントと呼ばれている。
# 最初の行に書くのが普通
# Ruby.2.0ではデフォルトのスクリプトエンコーディングはUTF-8。
# コードがUTF-8で記述されているのであれば、マジックコメントは必要ない。