2006-01-29から1日間の記事一覧

レンタルサーバ

RubyのCGIをテストするため、レンタルサーバを借りました。特に問題なく動きました。

呼び出し側のアスタリスク

メソッド呼び出しで引数に*をつけると、その内容が展開されます。 def rubyco(a, b, c, d) print "a = #{a}, b = #{b}, c = #{c}, d = #{d}\n" end a = [100, 200, 300] rubyco(0, *a) # => a = 0, b = 100, c = 200, d = 300

呼び出し側と受け取り側のアスタリスク

呼び出し側のアスタリスクは配列を展開しますが、受け取り側のアスタリスクは残りの引数を配列化します。 def rubyco(a, b, c, *d) p a p b p c p d end a = [100, 200, 300] rubyco(0, 1, *a)実行結果です。0, 1, 100, 200, 300が渡されるので、最後の200, …

ブロック付きメソッド呼び出し

以下のプログラムでdo ... endはブロックです。eachというメソッドをブロック付きで呼び出しています。 def print_them(a) a.each do |k| print "#{k} (#{k.class}), " end print "\n" end print_them([100, 200, 300]) # => 100 (Fixnum), 200 (Fixnum), 30…

yield

yieldを使ってブロックを呼び出すと、自分でeachを作ることもできます。yieldへの引数がブロックパラメータとして渡されます。 class Array def my_each for e in self yield(e) end end end def print_them(a) a.my_each {|k| print "#{k} (#{k.class}), " …

proc

proc { ... }で手続きオブジェクト(Procオブジェクト)を作ると、ブロック付きのメソッド呼び出しで手続きを別途渡すことができます。 class Array def my_each for e in self yield(e) end end end def print_them(a) myproc = proc {|k| print "#{k} (#{k.c…

to_proc

to_procメソッドがあるオブジェクトならば、手続きオブジェクトとしてメソッドに渡すことができます。to_procメソッドはProcオブジェクトを返します。 class Rubyco def to_proc return proc {|k| print "#{k} (#{k.class}), " } end end class Array def my…

lilyを読む(1)

Rubyの勉強の一環として、ブログツールlilyを少し読んでみました。 index.rb class LilyCGI WEBrick::CGIを継承 Lilyをinclude (mixin?) 2タブ lib/lily.rb module Lily Utilをinclude hashのキーを'...'で書くのと"..."で書くのが混じっているが…。 service…