小编DMi*_*ner的帖子

如何在Ruby中创建私有类常量

在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)

ruby access-specifier class-constants

38
推荐指数
3
解决办法
1万
查看次数

如果我没有指定<programfile>,如何将<arguments>传递给IRB?

以来:

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)

有什么建议?

ruby irb argument-passing

11
推荐指数
2
解决办法
4106
查看次数

Ruby如何处理嵌套类的继承?

在以下测试用例中:

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?

ruby inheritance nested-class

6
推荐指数
1
解决办法
2121
查看次数