Aruyo

Rubyを触ってみる 2限目

毎日ちょっとづつやってくよー。
もらったテキスト通りに打ち込んでみる。
九九の出力ってやつ。


for i in 1..9
	for j in 1..9
		print i * j
	end
end

むかしの BASIC で書いた FOR i = 1 TO 9 STEP 1 _ NEXT からするとえらい差やなあ。PHP では for は滅多に使わないけど、それでも for($i = 1; $i <= 9; $i++) {} とかだもんね。

1..9 って範囲式らしい。 1...9 だと for($i = 1; $i < 9; $i++) {} になるみたい。 もちろん数値だけでなく式で範囲も書けるし、この式がオブジェクトだからけっこう複雑なことも出来るみたいだけど、それはまたそのうちなー。

結果はいたってシンプル。


$ ruby test_1.rb
1234567892468101214161836912151821242748121620242832365101520253035404561218243036424854714212835424956638162432404856647291827364554637281

はいはい、15分しかないからさくさくいくよー。
( これ書いてる時間のほうがほとんどだ )


for i in 1..9
	for j in 1..9
		print "  #{i * j}"[-3..-1]
	end
	puts
end

ダブルクォートだと式やリテラルが評価されるのはPHPとおんなじか。 #{式}で直接中に書けるのは面白いなあ。コメントも書けるけど、CR/LFまではコメント評価になるから改行せよってことらしいけど。

[-3..-1] ってのは書き出しの位置みたいだけど、書式 " #" が3桁だからかね。ん ? ってことは # は 0 じゃなくて -1 か。演算結果に対してとしてもちょっとしっくりこない。ちょっと、あとで試してみよう。

単独の puts も気になったけど、改行だというのはなんとなくわかる。引数が無いとそういう動作するんでしょ、きっと。

とりあえず動かしてみる。 なんとなく良い感じ。


$ ruby test_2.rb
  1  2  3  4  5  6  7  8  9
  2  4  6  8 10 12 14 16 18
  3  6  9 12 15 18 21 24 27
  4  8 12 16 20 24 28 32 36
  5 10 15 20 25 30 35 40 45
  6 12 18 24 30 36 42 48 54
  7 14 21 28 35 42 49 56 63
  8 16 24 32 40 48 56 64 72
  9 18 27 36 45 54 63 72 81

試しに [-2..0] にしたら改行されるだけでなにも文字は出なかった。 [-4..-2] にしたら...


$ ruby test_2-2.rb
nilnilnilnilnilnilnilnilnil
nilnilnilnil  1  1  1  1  1
nilnilnil  1  1  1  2  2  2
nilnil  1  1  2  2  2  3  3
nil  1  1  2  2  3  3  4  4
nil  1  1  2  3  3  4  4  5
nil  1  2  2  3  4  4  5  6
nil  1  2  3  4  4  5  6  7
nil  1  2  3  4  5  6  7  8

...だってさ。
時間が無いので宿題にしていまはこういうものと思っておこう。