(loop for i from 1 to 30
do (format t "~A~%"
(let ((s (concatenate
'string
(nth (mod i 3)
'("Fizz"))
(nth (mod i 5)
'("Buzz")))))
(if (zerop (length s))
i
s))))
ただ、正直な感想を言えば、ある意味これは文字通りハックだな、と思いました。
そもそも、配列(あるいはリスト)の要素数を越えたトコでアクセサが作用すると
nil
が返る、と言う仕様じゃないと書き得ないコードです。Schemeなんかではエラー扱いになりますが、Cだったらどうなるでしょうね。考え出すと恐ろしくて夜も眠れません。
ある意味、Rubyの仕様が良く分かってる、と言う意味では素晴らしいとは思いましたが、同時に普遍的に使えるテクニックではない辺りが残念ではあります。
0 件のコメント:
コメントを投稿