And for a Fixnum printf is indeed private:
ratdog:~ mike$ irb
irb(main):001:0> 3.private_methods
=> ["select", "lambda", "local_variables", "chomp", "raise", "sub!", "Array", "print", "trap", "method_missing", "format", "exit!", "at_exit", "readlines", "set_trace_func", "autoload", "system", "getc", "initialize_copy", "split", "fail", "putc", "gsub!", "iterator?", "catch", "p", "remove_instance_variable", "sleep", "sub", "syscall", "callcc", "Integer", "fork", "srand", "irb_binding", "singleton_method_removed", "caller", "chop!", "puts", "scan", "autoload?", "binding", "block_given?", "throw", "warn", "`", "gsub", "loop", "Float", "open", "singleton_method_undefined", "rand", "exit", "chomp!", "gets", "trace_var", "load", "exec", "global_variables", "proc", "initialize", "chop", "printf", "String", "test", "sprintf", "abort", "readline", "untrace_var", "require", "eval"]
···
On 21-Mar-06, at 6:11 PM, Mike Stok wrote:
Because printf is a method of Kernel
ratdog:~ mike$ irb
irb(main):001:0> x = 3
=> 3
irb(main):002:0> Kernel.printf('%X', x)
3=> nil
irb(main):003:0> 3.methods.include?('printf')
=> false
irb(main):004:0> Kernel.methods.include?('printf')
=> true
--
Mike Stok <mike@stok.ca>
http://www.stok.ca/~mike/
The "`Stok' disclaimers" apply.