如何动态创建局部变量?

2023-12-08

我有一个变量var = "some_name"我想创建一个新对象并将其分配给some_name。我该怎么做?例如。

var = "some_name"
some_name = Struct.new(:name) # I need this
a = some_name.new('blah') # so that I can do this.

您无法在 Ruby 1.9+ 中动态创建局部变量(您可以在 Ruby 1.8 中通过eval):

eval 'foo = "bar"'
foo  # NameError: undefined local variable or method `foo' for main:Object

不过,它们可以在评估代码本身中使用:

eval 'foo = "bar"; foo + "baz"'
#=> "barbaz"

添加了 Ruby 2.1local_variable_set,但是也不能创建新的局部变量:

binding.local_variable_set :foo, 'bar'
foo # NameError: undefined local variable or method `foo' for main:Object

这种行为cannot无需修改 Ruby 本身即可进行更改。另一种方法是考虑将数据存储在另一个数据结构中,例如一个哈希,而不是许多局部变量:

hash = {}
hash[:my_var] = :foo

请注意,两者eval and local_variable_set do允许重新分配现有的局部变量:

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

如何动态创建局部变量? 的相关文章

  • 如何使用 new 干净地初始化 Ruby 中的属性?

    class Foo attr accessor name age email gender height def initalize params name params name age params age email params e
  • 我可以在 render.js 上执行的视图中使用 CoffeeScript 吗?

    我需要做什么才能在 Rails JS 视图中使用 CoffeeScript 例如 def index format js render layout gt false end 我需要做什么才能让 Rails 使用index js coffe
  • 将元数据添加到 PDF

    我需要将元数据添加到我正在创建的 PDF 中prawn http rubygems org gems prawn 该元数据稍后可能会被提取 pdf阅读器 http rubygems org gems pdf reader 该元数据将包含内部
  • 缓存日期早于 1900 年的模型时出现编组错误

    我有一些具有 published on 属性的活动记录模型 当我尝试缓存 Publication on 日期早于 1900 年 1 月 1 日的模型时 出现如下错误 Marshalling error for key popular pro
  • ruby 中 for 循环的语法

    如何在 Ruby 中执行这种类型的 for 循环 for int i 0 i
  • 处理不兼容的字符编码:UTF-8 和 ASCII-8BIT

    我在生产中遇到不兼容的字符编码错误 我尝试在本地重现它 但没有成功 这是错误消息 A ActionView Template Error occurred in controller name action name incompatibl
  • 使用 FactoryGirl 测试简单的 STI

    我有一个类 它是其他一些专门处理该行为的类的基础 class Task lt ActiveRecord Base attr accessible type name command validates presence of type na
  • Ruby 字符串上的扫描和匹配有什么区别

    我是 Ruby 新手 并且一直使用String scan搜索某个数字第一次出现的位置 返回值在嵌套数组中有点奇怪 但我只是去了 0 0 为了我想要的价值观 我确信它有它的用途 只是我还没有使用它 我刚刚发现有一个String match方法
  • 正则表达式匹配组,但组成员除外

    因此 有许多正则表达式可以匹配特定的组 如下所示 Any character except a newline m Any character the m modifier enables multiline mode w A word c
  • 学习树顶

    我正在尝试自学 Ruby 的 Treetop 语法生成器 我发现 对于 最好的 文档来说 不仅文档非常稀疏 而且它的工作方式似乎并不像我希望的那样直观 从高层次上来说 我真的很喜欢比现场文档或视频更好的教程 如果有的话 在较低的层面上 这是
  • 如何在 Rails 模型中获取 request.uri?

    request request 当我在控制器中写这个时 它就会起作用 但是如果我在模型或应用程序控制器中需要这个变量 我该怎么办 模型存在于 Web 请求的上下文之外 您可以在 irb 中实例化它们 可以在延迟作业或脚本等中实例化它们 如果
  • YAML 每个缩进有多少个空格?

    如果我在每个缩进级别使用一个空格 两个或四个空格 有什么区别吗 YAML 每个结构类型的空间数量有什么具体规则吗 例如4嵌套空间maps 1每空间项目清单 etc 我正在为 elastic beanstalk ebextensions 编写
  • 关于空 own_to 关联的最佳实践

    想象一下以下情况 我有一个dog模型和一个house模型 一只狗可以属于一个房子 一个房子可以有很多只狗 所以 Class Dog lt ActiveRecord Base belongs to house end Class House
  • Ruby Time.parse 给我超出范围的错误

    我正在使用 Time parse 从字符串创建 Time 对象 因为某些原因 Time parse 05 14 2009 19 00 导致参数超出范围错误 而 Time parse 05 07 2009 19 00 does not 有任何
  • Rails 中带有 text_field 的逗号分隔数组

    我有一些users可以有很多posts 并且每个帖子都可以有很多tags 我已经使用一个实现了拥有并属于许多帖子和标签之间的关系 创建新帖子时 用户可以使用逗号分隔的值列表对其进行标记 就像在 SO 上发布新问题时一样 如果任何标签尚不存在
  • #freeze 除了防止修改之外还有其他用途吗?

    Ruby s 标准uri library https github com ruby ruby tree trunk lib uri对于无法修改或修改不会造成损害的对象 冻结有很多用途 user password ui split free
  • 如何使用 ActiveRecord 列出所有数据库

    我希望能够使用 ActiveRecord 列出所有数据库 因此 我需要在终端中使用与以下命令等效的 ActiveRecord psql host 192 168 0 100 port 5432 username postgres list
  • “Dir.entries”中的排序顺序

    是否有固定 默认的排序顺序Dir entries返回结果 根据经验我知道前两个条目是 and 根据 Ruby 语言文档 Dir entries http ruby doc org core classes Dir html M000607不
  • 是否可以下载 Ruby gem 而不自动安装它?

    当我使用下载东西时gem我希望能够只下载 gem 然后选择是否要安装它 我问这个问题是因为我想在多台计算机上安装特定的 gem 而不是在每台计算机上从互联网安装 宝石获取 所以 像 gem fetch gosu 这将离开gosu 0 7 1
  • 为什么私有辅助方法仍然可以在视图中访问?

    另一个 为什么会这样 的问题 我注意到私有辅助方法仍然可以在视图中访问 为什么 有没有办法防止这种情况 例如 当具有只能从另一个助手中调用的助手方法时 帮手是混合在一起的模块 http www ruby doc org docs Progr

随机推荐

  • (Xcode 6 beta / Swift)performSegueWithIdentifier 在 segue 之前有延迟

    我刚刚第一次使用 Swift 和 Xcode 6 beta 学习 Ios 编程 我正在制作一个简单的测试应用程序 它应该调用 API 然后以编程方式转到不同的视图以显示检索到的信息 问题是segue 在我的委托方法中didReceiveAP
  • 当我“像 shell 脚本一样”运行 setuptools .egg 时,实际发生了什么?

    来自阅读本文档 我已经建立了一个关于命令内容的心理模型sh setuptools 0 6c11 py2 7 egg实际上确实如此 但它非常不完整 我仍然对某些方面感到困惑 我的思维模型是这样的 当发出这个命令时 egg 我认为它是一种巧妙处
  • jquery 的子字符串选择器?

    是否可以使用 jquery 仅选择字符串的一部分 例如我有一个文本 p Metuentes igitur idem latrones Lycaoniam magna parte campestrem p 所以现在如果用户搜索一个字符串 我希
  • C++17 静态内联成员的编译器错误

    我正在使用 Microsoft Visual Studio 2017 据我所知 它确实支持 C 17 静态内联类变量 我的问题是 如果我将所有成员保留为统一状态 它可以正常工作 但在初始化某些成员时会出现编译器错误 在以下示例中 inclu
  • 动态添加侦听器到 ajax 在 jQuery 中创建的内容

    我正在尝试获取单击的链接的 html 值 这些链接是使用 Ajax 动态创建的 所以我认为 bind 不会 工作 但我没有最新版本的 live div message click function var valueSelected thi
  • JIT编译和DEP

    我正在考虑尝试一些 jit 编译 只是为了学习 并且让它跨平台工作会很好 因为我在家运行所有主要的三个 windows os x linux 考虑到这一点 我想知道是否有任何方法可以摆脱使用虚拟内存窗口函数来分配具有执行权限的内存 如果只使
  • 关于静态持有者单例模式

    我根据挥发性 惰性单例 急切单例 普通单例以及通过枚举等条件以多种方式开发了单例 但具体来说我想了解如下所示的静态持有者模式单例 public static class Singleton private static class Inst
  • QML TableView 使用 QtQuick.Controls 2 单击行

    我在网上搜索了很多 但没有找到答案 这真的很奇怪 因为我认为这是大多数人应该使用的基本功能 可能我不明白如何正确使用表格视图 with QtQuick Controls 2 问题是 我想知道我单击了哪一行 并且我想访问该行的特定列的数据 类
  • Gmail 应用程序中的表格间隙未跨越整个宽度和高度

    经过几天的尝试寻找解决方案 未成功 我决定向社区的集体智慧和经验寻求帮助 我 我有一个电子邮件模板 可以在所有桌面 网络和移动客户端 Android 版 Gmail 应用程序除外 上正确显示 我有一个嵌套的导航表 由顶部图像 导航本身和底部
  • 如何在 pandas 中将多列折叠为一列

    我有一个填充了用户和类别的 pandas 数据框 但这些类别有多个列 user category val1 val2 val3 user 1 c1 3 NA None user 1 c2 NA 4 None user 1 c3 NA NA
  • 正则表达式仅匹配最里面的分隔序列

    我有一个包含由多个字符分隔的序列的字符串 lt lt and gt gt 我需要一个正则表达式来只给我最里面的序列 我已经尝试过前瞻 但它们似乎没有按照我期望的方式工作 这是一个测试字符串 do not match this lt
  • SSRS 2012 图表未渲染 [关闭]

    Closed 这个问题是无关 目前不接受答案 我们最近升级到 SQL Server 2012 几天前重新启动后 所有图表都停止工作 当我尝试从报告查看器控件中查看各种报告中的所有图表时 它们现在都显示为损坏的图像 左上角有一个红色 x 这种
  • 如何将元组的值转发到成员初始值设定项?

    我需要将元组的值转发到成员初始值设定项 struct Struct Member1 member1 Member2 member2 template
  • 如何在 Openshift 中使用简单的 npm-install?

    我正在尝试在我的 openshift 帐户上使用可爱文件 https www npmjs com package cute files 我知道 node js 的工作方式与我在 localhost 3000 中所做的一样 但不是那么专家 我
  • C中unsigned和unsigned int的区别

    您能说清楚两者之间的区别吗unsigned and unsigned int 也许一些示例代码会有所帮助 unsigned是一个修饰符 可以应用于任何整型 char short int long等 但就其本身而言 它与unsigned in
  • int64_t 的定义

    我是 C C 新手 所以我有几个关于基本类型的问题 a 你能向我解释一下两者之间的区别吗int64 t and long long int 根据我的理解 两者都是 64 位整数 有什么理由选择其中之一而不是其他吗 b 我试图查找定义int6
  • Spring AOP引入中原有接口丢失

    这是我的 Spring AOP 配置
  • 在 R 中绘图时图例消失

    我绘制了五个图表和一个图例 这些图表工作得很好 但是图例消失了而没有错误 我在 RStudio 中的预览如下所示 当我放大时 图例所在的区域是空白的 我使用以下代码 opar lt par no readonly TRUE par mfro
  • \377\376 附加到文件(Windows -> Unix)

    我有一个SSIS执行以下操作的包 运行 SQL 脚本 将结果导出到平面文件 UTF 8编码 分隔 并且 n对于新线路 FTP 结果到Solaris机器 二进制格式 问题是 当文件出现在我的 Solaris 机器上时 文件开头有以下内容 37
  • 如何动态创建局部变量?

    我有一个变量var some name 我想创建一个新对象并将其分配给some name 我该怎么做 例如 var some name some name Struct new name I need this a some name ne