テスト

コードを書く

~~~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