Re: [問題] 菜鳥有幾個問題想要請教一下

作者: sjh6537 (迷戀愛麗絲)   2013-02-18 15:28:31
Hi:
追了一下 puts
http://goo.gl/qssHb
main(int argc, char **argv)
ruby_init
http://goo.gl/5rt9E
http://goo.gl/fty3G
rb_call_inits();
1.9
http://www.douban.com/note/247053862/
(1.8 http://tinyurl.com/a56wuua)
Init_IO
line 11566:
https://github.com/ruby/ruby/blob/trunk/io.c
rb_define_global_function("puts", rb_f_puts, -1);
^^^^^^^^^^^^^^^^^^^^^^^^^
line 6857: rb_f_puts
return rb_funcall2(rb_stdout, rb_intern("puts"), argc, argv);
^^^^^^^^^
line 11746:
rb_define_hooked_variable("$stdout", &rb_stdout, 0, stdout_setter);
rb_stdout = prep_stdio(stdout, FMODE_WRITABLE, rb_cIO, "<STDOUT>");
rb_define_global_const("STDOUT", rb_stdout);
http://tinyurl.com/awqnfxh
rb_define_module_function(rb_mKernel, name, func, argc);
^^^^^^^^^^
http://goo.gl/dxY7c
rb_mKernel = rb_define_module("Kernel");
rb_include_module(rb_cObject, rb_mKernel);
rb_define_module_function
http://goo.gl/mPKFg
rb_define_singleton_method
http://goo.gl/ZWu02
rb_define_method(singleton_class_of(obj), name, func, argc);
http://rhg.rubyforge.org/chapter04.html
irb(main):112:0> Kernel.global_variables
:$stdin, :$stdout, :$stderr,$kernel, :$IO, :$stdio,
所以是 puts 是 Kernel module 的一個 global function = $stdout.puts
有錯請指正
※ 引述《mixfuture (恩)》之銘言:
: (ctrl + y 刪去不必要的行列)
: 環境:ruby 1.9.3 在windows 7 底下運作
: 1.最近在寫個小程式 想要用連結到資料庫作存取 有無類似像
: rails 上的 ActiveRecord api呢? 還是說有辦法直接用ActiveRecord
: 這個 api
: 2. ruby的概念是萬物皆物件 也就是說我們有了類別 然後才能new出一個實體物件
: 可是諸如像是 puts , p 等這些我們卻不用new 而直接使用這些物件
: 這是為什麼呢??是有點類似java的靜態物件嗎?
: 菜鳥問題 凡請大家 多解惑了
作者: mixfuture (恩)   2013-02-18 17:54:00
感激詳細解說!!

Links booklink

Contact Us: admin [ a t ] ucptt.com