在Ruby中,如何创建私有类常量?(即在课堂内可见但不在课堂外可见的)
class Person
SECRET='xxx' # How to make class private??
def show_secret
puts "Secret: #{SECRET}"
end
end
Person.new.show_secret
puts Person::SECRET # I'd like this to fail
Run Code Online (Sandbox Code Playgroud) 以来:
irb --help
Run Code Online (Sandbox Code Playgroud)
用法:irb.rb [options] [programfile] [参数]
我知道如果我包含一个程序文件,我可以将参数传递给ARGV
例如:
irb test.rb A B C
Run Code Online (Sandbox Code Playgroud)
test.irb只是"p ARGV"
生产:
["a","b","c"]
使程序文件成为DOS 中的con ...我可以做以下
irb con A B C
con(main):001:0> ARGV
Run Code Online (Sandbox Code Playgroud)
生产:
ARGV
=> ["A","B","C"]
但这是系统依赖的,并具有回声输入的副作用:-(
我真正喜欢的是类似的东西
irb -- a b c
Run Code Online (Sandbox Code Playgroud)
顺便说一句:我知道我可以在irb中设置ARGV,但我的意图是别名== irb -rSpecialLibrary"所以我可以这样做:
special A B C
<input goes here>
Run Code Online (Sandbox Code Playgroud)
有什么建议?
在以下测试用例中:
class Package
class Component
def initialize
p [:initialize,self]
end
end
end
class Package_A < Package
end
class Package_B < Package
end
# Why are the following components of type Package and not Package_A and Package_B
component=Package_A::Component.new
p component
component=Package_B::Component.new
p component
Run Code Online (Sandbox Code Playgroud)
结果是:
[:initialize, #<Package::Component_1:0x2c0a8f8>]
#<Package::Component:0x2c0a8f8>
[:initialize, #<Package::Component_1:0x2c0a5b0>]
#<Package::Component:0x2c0a
Run Code Online (Sandbox Code Playgroud)
如何获取特定的Package_A.component和Package_B.component?