这是一个 cruby bug 吗?
km@latika:~$ ruby -v -e 'puts nil.class.to_s, ARGF.class.to_s'
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux-gnu]
NilClass
ARGF.class
km@latika:~$ jruby -v -e 'puts nil.class.to_s, ARGF.class.to_s'
jruby 9.3.9.0 (2.6.8) 2023-01-16 9.3.9.0+ds-8 OpenJDK 64-Bit Server VM 17.0.10+7-Debian-1deb12u1 on 17.0.10+7-Debian-1deb12u1 +jit [x86_64-linux]
NilClass
ARGFClass
我在其他地方没有见过包含句点的类名...
io.c
:
rb_cARGF = rb_class_new(rb_cObject);
rb_set_class_path(rb_cARGF, rb_cObject, "ARGF.class");
rb_cARGF
是类对象,rb_set_class_path
将其注册在名称 "ARGF.class"
下。这只能在 C 中实现,在 Ruby 中无法创建此类。
也许他们不想将其作为常规类公开,因为创建另一个
ARGF.class
实例没有什么意义。您只能与其预定义的实例进行交互ARGF
。