为什么c.f()
以下不是b.f()
?我想使用class A::C
- 方式声明一个嵌套类,以避免过多的缩进。
class A
CONSTANT = 1
end
class A
class B
p self # => A::B
def f
print CONSTANT, "\n"
end
end
end
class A::C
p self # => A::C
def f
print CONSTANT, "\n"
end
end
b = A::B.new
b.f() # => 1
c = A::C.new
c.f() # => `f': uninitialized constant A::C::CONSTANT (NameError)
答案 0 :(得分:0)
您可以使用分号将其放在一行中:
class A; class C
...
end end
答案 1 :(得分:0)
您可以通过在A::
class A
CONSTANT = 1
end
class A
class B
def f
puts A::CONSTANT
end
end
end
class A::C
def f
puts A::CONSTANT
end
end
b = A::B.new
b.f() #=> 1
c = A::C.new
c.f() #=> 1