ruby 方法名称中的变量

2024-01-12

我有以下代码:

for attribute in site.device_attributes
  device.attribute
end

我希望代码用“属性”的值替换方法名称。

我努力了device."#{attribute}"以及各种排列。

这完全不可能吗?我错过了什么吗?

我已经考虑过重写 method_missing ,但是当我的问题是我需要调用“未知”方法时,我不知道这实际上对我有什么帮助。


您可以使用#send方法通过方法名称调用对象方法:

object.send(:foo) # same as object.foo

您可以将参数传递给调用的方法:

object.send(:foo, 1, "bar", 1.23) # same as object.foo(1, "bar", 1.23)

因此,如果变量“attribute”中有属性名称,您可以使用以下命令读取对象的属性

object.send(attribute.to_sym)

并写入属性的值

object.send("#{attribute}=".to_sym, value)

在 Ruby 1.8.6 中,#send 方法可以执行任何对象的方法,无论其可见性如何(例如,您可以调用私有方法)。这在 Ruby 的未来版本中可能会发生变化,您不应该依赖它。要执行私有方法,请使用#instance_eval:

object.instance_eval {
  # code as block, can reference variables in current scope
}

# or

object.instance_eval <<-CODE
  # code as string, can generate any code text
CODE

Update

您可以使用public_send调用有关可见性规则的方法。

object.public_send :public_foo # ok
object.public_send :private_bar # exception
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ruby 方法名称中的变量 的相关文章

  • Ruby:在 Ubuntu 上安装 rmagick

    我正在尝试在 Ubuntu 10 04 上安装 RMagick 看起来here https stackoverflow com questions 1482823 is there an easy way to install rmagic
  • 使用Rails UJS,如何从函数提交远程表单

    我正在使用Rails UJS 我有一个表单设置来进行远程提交 如下所示
  • Ruby on Rails 最酷的功能是什么,为什么选择它? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我问这个问题之前 我浏览了 SO 上 Ruby on Rails 的搜索结果 找不到太多 但以下 在此页面上找到 https stackove
  • 用于 RESTful 轨道应用程序的简单面包屑

    是否有任何辅助方法 除了默认 Rails 面包屑导航 http wiki rubyonrails org rails pages Breadcrumbs 为特定页面动态生成面包屑导航 而无需在 RESTful 应用程序中传递琐碎的参数 也就
  • Eventmachine start_tcp_server 无接受器 - 端口正在使用或需要 root 权限(运行时错误)

    我已经 3 天无法运行本地服务器了 重新启动我的计算机没有帮助 有几次 在反复尝试大约 40 50 次之后 它随机地起作用了 我不明白为什么 我尝试过一次不同的端口并且有效 但从那以后 没有端口有效 每次我尝试运行我的 Rails 服务器时
  • 错误“未初始化常量 AWS (NameError)”

    它说 AWS 未初始化 我正在使用 aws sdk core gem 我尝试使用 aws sdk gem 代替 问题仍然存在 这是initializers aws rb 文件 AWS config access key id gt ENV
  • 从类内部调用属性访问器方法[重复]

    这个问题在这里已经有答案了 我正在尝试调用我的类属性编写器之一 但由于某种原因它永远不会被调用 下面是一些代码 可以使这一点更清楚 class Test attr reader test def test val puts Called t
  • Rails 3 - “无法解析 Yaml”

    我不知道我做错了什么 我尝试运行 rails c 但它只是给了我一个错误 10 分钟前它还在工作 C Ruby192 lib ruby 1 9 1 psych rb 148 in parse couldn t parse YAML at l
  • 设备注册控制器获取零资源的自定义操作

    基本上我想要有两个单独的操作来更改密码和更改电子邮件 而不是只有一个 我已经更新了我的路由以指向继承自 Devise RegistrationsController 的新控制器 我的路线 rb devise for users contro
  • Twitter Bootstrap 中下拉链接的模态

    我正在尝试从下拉菜单中的链接进行模式启动 该模式似乎已启动 网站变为灰色 但看不到 来自不在下拉列表中的常规链接的模态工作得很好 我对 jquery 进行了愚弄 但由于我是 jquery 的新手 所以没有任何结果 这是我的网站代码
  • ruby 的 String .hash 方法如何工作?

    我只是红宝石的新手 我见过一个字符串方法 String hash 例如 在irb 我试过了 gt gt mgpyone hash returns gt 144611910 这个方法是如何工作的 The hash方法是为所有对象定义的 看文档
  • Rails 3:使用 Simple_form 如何创建一个向specialities#create 发布帖子的表单?

    如何使用 Simple form 创建一个向specialities create 发布帖子的表单 我试过这个
  • Ruby 可选参数和多个参数

    我试图将方法的第一个参数设置为可选 后跟任意数量的参数 例如 def dothis value 0 args 我遇到的问题是 这似乎实际上不可能 当我打电话时dothis hey how are you good 我希望它将值设置为默认值
  • 为什么 rand() 总是返回相同的数字?

    我在用 兰特 200 在我的 Rails 应用程序中 当我在控制台中运行它时 它总是返回随机数 但如果我在应用程序行中使用它 index rand 200 索引总是相同的号码 为什么会这样以及如何克服这个问题 简单的伪随机数生成器实际上生成
  • RSpec 请求规范发布一个空数组

    我目前正在 Rails 中开发 API 端点 如果我需要的数据无效 我想确保端点响应具有正确的错误状态 我需要一个 id 数组 无效值之一是空数组 Valid vendor district ids 2 4 5 6 Invalid vend
  • Ruby 的字符串并置功能的官方文档在哪里?

    我最近意识到 如果你并置一系列 Ruby 字符串文字 例如 a b c 它相当于这些字符串文字的串联 但是 我在任何地方都找不到这种语言功能的记录 我使用术语 并置 和 串联 进行搜索 但只在几个 StackOverflow 响应中找到了对
  • Rails 3 Mechanize - SocketError:getaddrinfo:主机或名称未知

    我正在使用 mechanize 但出现此错误 有人可以帮帮我吗 我已将元刷新设置为 true 错误日志 SocketError getaddrinfo Host or name not known form C Ruby192 lib ru
  • 在 Web 应用程序中显示最新的提交值?

    我有一些 Rails 应用程序 我使用 Git 作为版本控制系统 我使用 GitHub 或 Beanstalk 作为存储库主机 从理论上讲 我想要做的事情非常简单 以某种方式在 Web 应用程序的页脚中显示最新的提交 ID 号 哈希值 这样
  • 自定义通用 Rails 错误消息

    我们的 Rails 应用程序被设计为链接到多个客户端数据库的单个代码库 根据子域 应用程序确定要连接到哪个数据库 我们使用液体模板为每个客户定制演示文稿 我们无法为每个客户定制通用的 我们很抱歉 出了点问题 消息 谁能推荐一种方法让我们能够
  • Rails 3.1 和图像资源

    我已将管理主题的所有图像放入名为 admin 的文件夹内的资产文件夹中 然后我像平常一样链接到它 Ruby image tag admin file jpg CSS logo background url assets images adm

随机推荐

  • Spark聚合函数——aggregateByKey是如何工作的?

    假设我有一个分布在 3 个节点上的系统 并且我的数据分布在这些节点之间 例如 我有一个 test csv 文件 该文件存在于所有 3 个节点上 并且包含 2 列 row id c row1 k1 c1 row2 k1 c2 row3 k1
  • 具有 DataBinding 的 RecyclerView 通用适配器

    我使用 DataBinding 为 RecyclerView 创建了通用适配器 这是小代码片段 public class RecyclerAdapter
  • 如何禁用 Jupyter Notebook(Tab) 中的自动完成功能

    I typed Summary outside the cell and change the config of Jupyter notebook When I press Tab the autocomplete menu pop ou
  • 如何根据点计算角度?

    我想要一个简单的解决方案来计算一条线的角度 就像时钟的指针 我有2点 cX cY the center of the line eX eY the end of the line The result is angle 0 lt a lt
  • 字典作为线程安全变量

    我有一个类 单例 它包含一个静态字典 private static Dictionary
  • 使用 Web 套接字在浏览器中创建图形

    我正在尝试寻找可以在网络浏览器中创建条形图的示例或工具 我将通过网络套接字从服务器发送数据 当接收到数据时 我希望每个条形的 高度 发生变化 以反映接收到的数据 因此 用户可以看到图表随着数据的接收而变化 我见过很多例子 但我看不到一个能够
  • 哪个 Actor 模型库/框架适用于 python 和 Erlang 类? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个易于学习的 Python 2 x Actor 库或框架 我尝试过 Candygram 和
  • 从 SSJS xPages 调用 jar 的类

    我想问一个关于在 xPages 上的 SSJS 服务器端 JavaScript 中使用 Java 类的问题 我创建了一个简单的 Java 类 HelloWorld 并将其导出到 jar 文件 然后我尝试在 xPage 上从 SSJS 调用它
  • React Native for iOS 中宽度、高度、填充等的默认单位是什么?

    我正在为 iOS 构建一个 React Native 应用程序 Facebook 文档说宽度 高度 填充 边距等需要一个数字 我想知道样式的默认单位是什么
  • 在 PHP 中高效地逐行读取大文件?

    我的应用程序读取一个 5MB 10MB 的大文件 该文件已使用 json 条目逐行输入 每一行都由一个解析器处理 该解析器被馈送到多个解析器并单独处理 一旦文件被读取 文件就会被移动 该程序不断地输入要处理的文件 该计划目前与 file g
  • IE7 仅忽略来自生产服务器的页面上的 CSS 属性选择器

    在我的网站上 IE7 似乎忽略了某些 CSS 属性选择器 奇怪的是 只有当页面来自生产服务器时才会发生这种情况 如果我有完全相同的代码在我的个人服务器上 或者保存在我的硬盘上 它工作得很好 这是导致该问题的示例
  • R 中的“不加入”

    我正在寻找一种快速的方法来 不加入 即保留未合并的行 或内部联接的逆 我一直在做的方法是使用 data table 作为 X 和 Y 然后设置键 例如 require data table X lt data table category
  • 在 OSX 中捕获媒体键(播放/暂停)

    研究 问题 中年危机 有一些问题here https stackoverflow com questions 2477068 listening to mac keyboard play pause events and there htt
  • JGit:检索与 git 提交关联的标签

    我想使用 JGit API 检索与特定提交哈希相关的标签 如果有的话 请提供相同的代码片段 Git 对象模型 http book git scm com 1 the git object model html将标签描述为包含有关特定对象的信
  • @Order注解对XML序列化顺序没有影响

    我正在使用 Retrofit 2SimpleXmlConverter我在创建 Soap 请求对象时遇到一个问题 该对象基本上是一个具有 4 个元素子元素的元素 每个子元素都是不同的数据类型 这里是XML我想要产生的输出 必须遵守元素顺序
  • 如何在 Xcode 9 中使用带有 Playground 的自定义框架

    我正在尝试在 Playground 中使用自定义框架 如 Apple 文档中所述 http help apple com xcode mac 9 0 devc9b33111c http help apple com xcode mac 9
  • Eclipse 上安装的插件不可见

    当我在 Eclipse 中安装插件时 一切都很顺利 但重启后新插件就看不见了 我尝试过使用不同的插件 但它们都有同样的问题 我能看到它们的唯一地方是当我查看 已安装什么 时 可能是什么问题呢 这个问题及其解决方案在DZone 文章 http
  • 我正在用 C 搜索 cgi 库来构建一个安静的 Web 服务

    我想构建一个安静的 CoAP Web 服务 它可以执行 C 代码来处理事件 因此我正在搜索一个lib 它为我提供了C和cgi中的rest api 类似于 遗憾的是 restcgi 是用 c 编写的 而 CGI Simple 是用 perl
  • System.Data.SqlClient.SqlException:列名“Gender_id”无效

    我正在学习使用 ASP NET MVC 和实体框架进行 Web 应用程序开发 我有一个包含 3 个表的数据库 分别是学生 性别和课程 我遇到了这个问题 错误位于第 23 行 列名称 Genders Id 无效 列名 Programs Id
  • ruby 方法名称中的变量

    我有以下代码 for attribute in site device attributes device attribute end 我希望代码用 属性 的值替换方法名称 我努力了device attribute 以及各种排列 这完全不可