为什么我不能在初始化中使用 attr_accessor ?

2024-06-28

我正在尝试做一个instance_eval随后是一个attr_accessor inside initialize,我不断收到这样的消息:“初始化”:未定义的方法“attr_accessor”。为什么这不起作用?

代码看起来有点像这样:

class MyClass
   def initialize(*args)
      instance_eval "attr_accessor :#{sym}"
   end
end

您无法在实例上调用 attr_accessor,因为 attr_accessor 未定义为 MyClass 的实例方法。它仅适用于模块和类。我怀疑您想在实例的元类上调用 attr_accessor,如下所示:

class MyClass
  def initialize(varname)
    class <<self
      self
    end.class_eval do
      attr_accessor varname
    end
  end
end

o1 = MyClass.new(:foo)
o2 = MyClass.new(:bar)
o1.foo = "foo" # works
o2.bar = "bar" # works
o2.foo = "baz" # does not work
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我不能在初始化中使用 attr_accessor ? 的相关文章

随机推荐

  • 声明日期,然后添加下一个工作日

    我没有得到我需要的结果 我想做的就是声明我的日期 然后添加下一个工作日 IE CASHDATE 1 这有效 但我需要下一个工作日是 5 号 DECLARE CASHDATE DATETIME SET CASHDATE 2016 12 02
  • Shutil.copytree 没有文件

    我正在尝试使用shutil copytree shutil copytree SOURCE DIR TARGET DIR ignore None 此副本也文件在文件夹中 我只需要复制没有任何文件的文件夹 怎么做 您可以通过提供 忽略 功能来
  • 如何使用 Javascript Promise 按顺序执行 AJAX 调用

    我正在循环访问地图 我想使用每个地图值作为参数进行单独的 AJAX 调用 以获取一些数据并记录它 见下文 这是可行的 但我想让 AJAX 调用按照地图的顺序进行 因为每次调用都是异步的 所以看来我应该使用 Promise 来实现按顺序执行
  • 导航控制器工具栏不显示 UIBarButtonItem

    我在 Xcode 6 2 的属性检查器中使用 显示工具栏 复选框在导航控制器上添加 或显示 工具栏 Because 与导航控制器关联的自定义工具栏 只读 我在用着self navigationController setToolbarIte
  • Apple doc的GCD生产者-消费者解决方案错误?

    在 Apple 并发编程指南的 从线程迁移 部分中 有 改变生产者 消费者实施 http developer apple com library ios documentation General Conceptual Concurrenc
  • 如何在WPF中应用WS_EX_TRANSPARENT?

    我想制作一个启动画面 无法通过鼠标 UI 单击 选择 因此我如何申请 Win32 ExtendedWindowStyles WS EX TRANSPARENT 在 Windows 演示基础窗口上 在表格中我会这样做 https stacko
  • 功能测试 - 模拟服务不会保留在服务容器中

    我希望有人能够对我面临的这个问题有所启发 问题 我在功能单元测试中模拟了doctrine orm default entity manager 服务 我将其注入客户端服务容器中 这样我就不必在功能测试过程中访问我的数据库 对于仅涉及 GET
  • 从 ASP.NET Core 中的不同 HTTP 标头读取 JWT 令牌

    在 ASP NET Core API 项目中 我需要验证位于与 Authorization 标头不同的标头中的另一个 JWT Bearer 令牌 例如 假设发送 GET 请求以获取产品 api products在名为的标头中带有不记名令牌A
  • 如何获取行数据绑定事件中单元格的值?以及如何检查单元格是否为空?

    我正在使用 sqldatasource 和GridView 我想从 GridView 中获取单元格的值RowDataBound事件 因为我不能使用e RowIndex 如果单元格为空 如何检查 updatetng 事件 我用了if null
  • md5盐密码php

    我知道关于这个主题有很多问题 但我真的需要问这个 今天我一直在研究使用 md5 加密密码 所以我所做的是 我有 4 盐 它们根据用户值而变化 从电子邮件 ID 和 substr 然后对它们进行 md5 来自电子邮件和 ID 的 substr
  • CSS 改变悬停时的背景颜色

    为什么这不起作用 div class homePrizes div class homeCredit 1250 Points div div class homePrize Prize1 div div CSS homePrizes cle
  • 如何安装gitlab-rails?

    我正在尝试为 Gitlab 项目创建一个组访问令牌 它需要访问 gitlab rails 控制台才能执行此操作 在 gitlab 教程上 这是安装它的链接 https docs gitlab com ee administration op
  • C# 按特定属性比较两个大型项目列表

    我有两个大的项目列表 其类如下所示 两个列表的类型相同 public class Items public string ItemID get set public int QuantitySold get set var oldList
  • 我应该在单个 WordPress 模板中使用 $post = Timber::query_post() 还是 $post = new TimberPost() ?

    我在官方 Timber 存储库上读到 有关使用的一般问题应发布在这里 我是木材 树枝的新手 我有一个非常 基本 的问题 在入门主题中我已经看到了single php传递给 context 的 post 变量设置为 post Timber q
  • Scala 中的逆变和协变

    abstract class Bhanu A val m List A gives error contravariant type A occurs in covariant position in type gt List A of v
  • VSS 到 Subversion

    我正在研究从 SourceSafe 到 Subversion 的潜在迁移 并且我们正在努力解决编辑 合并 提交与签出 更新 签入范例 主要关心的是您如何知道哪些文件已被 Subversion 检出 以及检出给谁 VSS 中是否有相当于 状态
  • 正则表达式删除文件扩展名

    我需要一个可以删除文件名扩展名的正则表达式 仅返回文件名 以下是一些输入和输出的示例 myfile png gt myfile myfile png jpg gt myfile png 显然我可以手动执行此操作 即删除最后一个点中的所有内容
  • Haskell 中将函数与类型关联起来

    假设您有一个序列化器 反序列化器类型类 class SerDes a where ser a gt ByteString des ByteString gt a 事实证明 为每种类型提供一个特殊的辅助函数至关重要a e g compress
  • 用户打字时自动删除输入框中的某些字符

    我正在尝试验证表单 并且我正在处理的输入框应该只包含数字 如果用户开始输入任何字母 我希望他们自动删除 显然如果他们输入数字 则不应删除 这是我的js var defaultValue 10 document ready function
  • 为什么我不能在初始化中使用 attr_accessor ?

    我正在尝试做一个instance eval随后是一个attr accessor inside initialize 我不断收到这样的消息 初始化 未定义的方法 attr accessor 为什么这不起作用 代码看起来有点像这样 class