テスト
コードを書く
~~~ruby と ~~~ でコードを囲むと、そのブロックが評価される。
array = [1,2,3,4]
converted = array.map { |e| e * 100 }
converted # 最後の行が出力される
=> [100, 200, 300, 400]
標準出力も表示される
puts :hoge
"fuga\npiyo".inspect
hoge
=> "fuga\npiyo"
ブロックは全部同じスコープ
先程定義した変数converted
が以下でも使える。
converted.map { |e| e / 100 }
=> [1, 2, 3, 4]
ライブラリを使う
もちろん外部のライブラリをロードすることもできる。
require 'matrix'
Matrix.identity(10)
=> Matrix[[1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1]]
to_htmlを実装する
to_html
メソッドを実装すると、その結果が出力される。
class Matrix # オープンクラス
def to_html
rows = self.to_a.map do |row|
elems = row.map do |elem|
"<td>#{elem}</td>"
end
"<tr>#{elems}</tr>"
end
"<table>#{rows.join}</table>"
end
end
Matrix.identity(10)
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |