ruby - Ruby 中神秘的数据类是什么?

标签 ruby

今天,我无意中发现了 Ruby 中神秘的 Data 类,但我找不到任何有用的信息来说明它的作用或它为什么存在。我假设它是语言实现本身的一部分。

有人知道它的作用吗?

mbp-scott:~ scott$ irb
ruby-1.9.3-p0 :001 > Data
=> Data
ruby-1.9.3-p0 :002 > Data.is_a? Module
=> true
ruby-1.9.3-p0 :003 > Data.is_a? Class
=> true
ruby-1.9.3-p0 :004 > Data.ancestors
=> [Data, Object, Kernel, BasicObject]
ruby-1.9.3-p0 :005 > Data.methods
=> [:allocate, :new, :superclass, :freeze, :===, :==, :<=>, :<, :<=, :>,
:>=, :to_s,:included_modules, :include?, :name, :ancestors, :instance_methods,
:public_instance_methods, :protected_instance_methods, :private_instance_methods,
:constants, :const_get, :const_set, :const_defined?, :const_missing, :class_variables,
:remove_class_variable, :class_variable_get, :class_variable_set,
:class_variable_defined?, :public_constant, :private_constant, :module_exec,
:class_exec, :module_eval, :class_eval, :method_defined?, :public_method_defined?,
:private_method_defined?, :protected_method_defined?, :public_class_method
:private_class_method, :autoload, :autoload?, :instance_method, :public_instance_method,
:nil?, :=~, :!~, :eql?, :hash, :class, :singleton_class, :clone, :dup, :initialize_dup,
:initialize_clone, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :frozen?,
:inspect, :methods, :singleton_methods, :protected_methods, :private_methods,
:public_methods, :instance_variables, :instance_variable_get, :instance_variable_set,
:instance_variable_defined?, :instance_of?, :kind_of?, :is_a?, :tap, :send,
:public_send, :respond_to?, :respond_to_missing?, :extend, :display, :method,
:public_method, :define_singleton_method, :object_id, :to_enum, :enum_for, :equal?,
:!, :!=, :instance_eval, :instance_exec, :__send__, :__id__]
ruby-1.9.3-p0 :006 > Data.instance_variables
=> []
ruby-1.9.3-p0 :007 > self
=> main

最佳答案

C-API 文档中的一些信息:

它是在 object.c 上定义的. marshal.c 将其用作临时内部容器类型 here , herehere . stringio.c用作 StringIO 的父类(super class)。 error.c用作 NameError::message 的父类(super class)(似乎无法从 ruby​​ 端访问,因为它不是以大写字母开头)。是 iconv.cIconv 的父类(super class).

它是特定于实现的,不应公开。只是不要使用它。

关于ruby - Ruby 中神秘的数据类是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8435033/

相关文章:

ruby-on-rails - ruby on rails rspec 错误

asp.net - 使用 Rake 创建 IIS 网站

Ruby - 使用 REXML 查找元素

c# - Ruby 等效于 C# Linq 聚合方法

ruby - 使用 RSpec 将类实例加倍的正确方法?

ruby-on-rails - Rails - 共享数据库和模型

ruby - Ruby 中的 block 绑定(bind)

ruby-on-rails - 在哪里可以找到 Heroku 构建环境中可用的二进制文件列表?

ruby-on-rails - Rails postgres 错误:ActiveRecord::StatementInvalid 异常:PG::AmbiguousColumn:错误:列引用 "sample_id"不明确

ruby - 在ruby中生成热图的算法