Skip to content

Instantly share code, notes, and snippets.

@pasberth
Created July 20, 2011 08:32
Show Gist options
  • Save pasberth/1094577 to your computer and use it in GitHub Desktop.
Save pasberth/1094577 to your computer and use it in GitHub Desktop.
Closure
# irb(main):001:0> require './closure'
# => true
# irb(main):002:0> mkclosure 'madohomu'
# => nil
# irb(main):003:0> homu
# madohomu
# => nil
# irb(main):004:0> mado
# NameError: undefined local variable or method `bind' for main:Object
def mkclosure(bind)
def self.mado
puts bind # bind を参照できないのでクロージャではない
end
self.define_singleton_method(:homu) {
puts bind # bind を参照できるのでクロージャ
}
return
end
# という感じのことを思ったけど、
# return Proc.new { puts bind }
# なことだけをクロージャと呼ぶのだろうか?
#
# ary.map { |str| str + bind } とかもクロージャだと思うんだけど・・・
# 違うのかなあ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment