Skip to content

Instantly share code, notes, and snippets.

@cwgem
Created August 4, 2011 21:10
Show Gist options
  • Save cwgem/1126294 to your computer and use it in GitHub Desktop.
Save cwgem/1126294 to your computer and use it in GitHub Desktop.
Symbol.to_proc inconsistencies
def mymeth
puts "Hello"
end
puts :mymeth.to_proc.call
#SOLAR:~ chriswhite$ ruby -v
#rubinius 1.2.5dev (1.8.7 1b8a960a yyyy-mm-dd JI) [x86_64-apple-darwin10.8.0]
#SOLAR:~ chriswhite$ ruby test_proc.rb
#Hello
#nil
#SOLAR:~ chriswhite$ ruby -v
#jruby 1.6.3 (ruby-1.8.7-p330) (2011-07-07 965162f) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_26) [darwin-x86_64-java]
#SOLAR:~ chriswhite$ ruby test_proc.rb
#ArgumentError: no receiver given
# call at org/jruby/RubyProc.java:268
# call at org/jruby/RubyProc.java:228
# (root) at test_proc.rb:5
#SOLAR:~ chriswhite$ ruby -v
#ruby 1.9.3dev (2011-07-31) [x86_64-darwin10.8.0]
#SOLAR:~ chriswhite$ ruby test_proc.rb
#test_proc.rb:5:in `call': no receiver given (ArgumentError)
# from test_proc.rb:5:in `<main>'
def mymeth
puts "Hello"
end
puts :mymeth.to_proc.call nil
#SOLAR:~ chriswhite$ ruby -v
#rubinius 1.2.5dev (1.8.7 1b8a960a yyyy-mm-dd JI) [x86_64-apple-darwin10.8.0]
#SOLAR:~ chriswhite$ ruby test_proc.rb
#Hello
#nil
#SOLAR:~ chriswhite$ ruby -v
#jruby 1.6.3 (ruby-1.8.7-p330) (2011-07-07 965162f) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_26) [darwin-x86_64-java]
#SOLAR:~ chriswhite$ ruby test_proc.rb
#Hello
#nil
#SOLAR:~ chriswhite$ ruby -v
#ruby 1.9.3dev (2011-07-31) [x86_64-darwin10.8.0]
#SOLAR:~ chriswhite$ ruby test_proc.rb
#test_proc.rb:31:in `call': private method `mymeth' called for nil:NilClass (NoMethodError)
# from test_proc.rb:31:in `<main>'
def mymeth(name)
puts "Hello #{name}"
end
puts :mymeth.to_proc.call nil, "John"
#SOLAR:~ chriswhite$ ruby -v
#rubinius 1.2.5dev (1.8.7 1b8a960a yyyy-mm-dd JI) [x86_64-apple-darwin10.8.0]
#SOLAR:~ chriswhite$ ruby test_proc.rb
#Hello John
#nil
#SOLAR:~ chriswhite$ ruby -v
#jruby 1.6.3 (ruby-1.8.7-p330) (2011-07-07 965162f) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_26) [darwin-x86_64-java]
#SOLAR:~ chriswhite$ ruby test_proc.rb
#Hello John
#nil
#SOLAR:~ chriswhite$ ruby -v
#ruby 1.9.3dev (2011-07-31) [x86_64-darwin10.8.0]
#SOLAR:~ chriswhite$ ruby test_proc.rb
#test_proc.rb:55:in `call': private method `mymeth' called for nil:NilClass (NoMethodError)
# from test_proc.rb:55:in `<main>'
p (1..3).collect(&:to_s.to_proc)
#SOLAR:~ chriswhite$ ruby -v
#rubinius 1.2.5dev (1.8.7 1b8a960a yyyy-mm-dd JI) [x86_64-apple-darwin10.8.0]
#SOLAR:~ chriswhite$ ruby test_proc.rb
#["1", "2", "3"]
#SOLAR:~ chriswhite$ ruby -v
#jruby 1.6.3 (ruby-1.8.7-p330) (2011-07-07 965162f) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_26) [darwin-x86_64-java]
#SOLAR:~ chriswhite$ ruby test_proc.rb
#["1", "2", "3"]
#SOLAR:~ chriswhite$ ruby -v
#ruby 1.9.3dev (2011-07-31) [x86_64-darwin10.8.0]
#SOLAR:~ chriswhite$ ruby test_proc.rb
#["1", "2", "3"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment