i have a basic ruby class:
class LogEntry
end
我想要做的是定义一个哈希表,并赋予一些值,如下所示:
EntryType = { :error => 0, :warning => 1, :info => 2 }
这样我就可以像这样访问值(或类似的东西):
LogEntry.EntryType[:error]
在 Ruby 中是否可能实现这一点?我正在正确的道路上吗?
i have a basic ruby class:
class LogEntry
end
我想要做的是定义一个哈希表,并赋予一些值,如下所示:
EntryType = { :error => 0, :warning => 1, :info => 2 }
这样我就可以像这样访问值(或类似的东西):
LogEntry.EntryType[:error]
在 Ruby 中是否可能实现这一点?我正在正确的道路上吗?
class LogEntry
EntryType = { :error => 0, :warning => 1, :info => 2 }
end
但您希望将其作为引用
LogEntry::EntryType[:error]
或者你可以创建一个类方法:
class LogEntry
def self.types
{ :error => 0, :warning => 1, :info => 2 }
end
end
# And a simple test
LogEntry.types[:error].should be_an_instance_of(Hash)
为什么需要哈希?
你不能只在LogEntry类上声明条目类型吗?
class LogEntry
@@ErrorType = 0
End
LogEntry.ErrorType
class LogEntry
attr_reader :type
ERROR_RANKING = [ :error, :warning, :info, ]
include Comparable
def initialize( type )
@type = type
end
def <=>( other )
ERROR_RANKING.index( @type ) <=> ERROR_RANKING.index( other.type )
end
end
entry1 = LogEntry.new( :error )
entry2 = LogEntry.new( :warning )
puts entry1.type.inspect
#=> :error
puts entry2.type.inspect
#=> :warning
puts( ( entry1 > entry2 ).inspect )
#=> false
puts( ( entry1 < entry2 ).inspect )
#=> true
但是也可以看看 Ruby 内置的日志记录库 Logger。