APIdock / Ruby
/
method

singleton_methods

ruby latest stable - Class: Object
singleton_methods(p1 = v1)
public

Returns an array of the names of singleton methods for obj. If the optional all parameter is true, the list will include methods in modules included in obj. Only public and protected singleton methods are returned.

module Other
 def three() end
end
class Single
 def Single.four() end
end
a = Single.new 
def a.one()
end
class << a
 include Other
 def two()
 end
end
Single.singleton_methods  #=> [:four]
a.singleton_methods (false) #=> [:two, :one]
a.singleton_methods  #=> [:two, :one, :three]
VALUE
rb_obj_singleton_methods(int argc, const VALUE *argv, VALUE obj)
{
 VALUE recur, ary, klass, origin;
 struct method_entry_arg me_arg;
 struct rb_id_table *mtbl;
 if (argc == 0) {
	recur = Qtrue;
 }
 else {
	rb_scan_args(argc, argv, "01", &recur);
 }
 klass = CLASS_OF(obj);
 origin = RCLASS_ORIGIN(klass);
 me_arg.list = st_init_numtable();
 me_arg.recur = RTEST(recur);
 if (klass && FL_TEST(klass, FL_SINGLETON)) {
	if ((mtbl = RCLASS_M_TBL(origin)) != 0) rb_id_table_foreach(mtbl, method_entry_i, &me_arg);
	klass = RCLASS_SUPER(klass);
 }
 if (RTEST(recur)) {
	while (klass && (FL_TEST(klass, FL_SINGLETON) || RB_TYPE_P(klass, T_ICLASS))) {
	 if (klass != origin && (mtbl = RCLASS_M_TBL(klass)) != 0) rb_id_table_foreach(mtbl, method_entry_i, &me_arg);
	 klass = RCLASS_SUPER(klass);
	}
 }
 ary = rb_ary_new();
 st_foreach(me_arg.list, ins_methods_i, ary);
 st_free_table(me_arg.list);
 return ary;
}

AltStyle によって変換されたページ (->オリジナル) /