Hello all,
in ruby c source code, there is
http://codesearch.google.com/codesearch/p?hl=en#kOEgDIzD-Ao/trunk/lib/ruby/re.c&q=define_virtual&sa=N&cd=1&ct=rc&l=3369rb_define_virtual_variable
like
rb_define_virtual_variable(“$~”, match_getter,
match_setter);http://codesearch.google.com/codesearch/p?hl=en#kOEgDIzD-Ao/trunk/lib/ruby/re.c&q=define_virtual&sa=N&cd=1&ct=rc&l=3369
3370: rb_define_virtualvariable(“$&”, last_match_getter, 0);
http://codesearch.google.com/codesearch/p?hl=en#kOEgDIzD-Ao/trunk/lib/ruby/re.c&q=define_virtual&sa=N&cd=1&ct=rc&l=3370
3371: rbdefine_virtualvariable(“$`”, prematch_getter, 0);
http://codesearch.google.com/codesearch/p?hl=en#kOEgDIzD-Ao/trunk/lib/ruby/re.c&q=define_virtual&sa=N&cd=1&ct=rc&l=3371
3372: rbdefine_virtualvariable(“$'”, postmatch_getter, 0);
http://codesearch.google.com/codesearch/p?hl=en#kOEgDIzD-Ao/trunk/lib/ruby/re.c&q=define_virtual&sa=N&cd=1&ct=rc&l=3372
3373: rbdefine_virtualvariable(“$+”, last_paren_match_getter,
0);
http://codesearch.google.com/codesearch/p?hl=en#kOEgDIzD-Ao/trunk/lib/ruby/re.c&q=define_virtual&sa=N&cd=1&ct=rc&l=3373
3374:
http://codesearch.google.com/codesearch/p?hl=en#kOEgDIzD-Ao/trunk/lib/ruby/re.c&q=define_virtual&sa=N&cd=1&ct=rc&l=3374
3375: rbdefine_virtualvariable(“$=”, ignorecase_getter,
ignorecase_setter);
http://codesearch.google.com/codesearch/p?hl=en#kOEgDIzD-Ao/trunk/lib/ruby/re.c&q=define_virtual&sa=N&cd=1&ct=rc&l=3375
3376: rbdefine_virtualvariable(“$KCODE”, kcode_getter,
kcode_setter);
http://codesearch.google.com/codesearch/p?hl=en#kOEgDIzD-Ao/trunk/lib/ruby/re.c&q=define_virtual&sa=N&cd=1&ct=rc&l=3376
3377: rbdefine_virtual_variable(“$-K”, kcode_getter,
kcode_setter);
http://codesearch.google.com/codesearch/p?hl=en#kOEgDIzD-Ao/trunk/lib/ruby/re.c&q=define_virtual&sa=N&cd=1&ct=rc&l=3377
3378:
http://codesearch.google.com/codesearch/p?hl=en#kOEgDIzD-Ao/trunk/lib/ruby/re.c&q=define_virtual&sa=N&cd=1&ct=rc&l=3378
so actually this looks like global variable, but when you get/set it,
it will run thru a function,
How do I do it in Ruby code? make a global variable running through my
customized get/set procedure?
Thanks.