Ruby Koans:为什么将符号列表转换为字符串

2024-02-27

我指的是 Ruby Koans 中 about_symbols.rb 中的这个测试https://github.com/edgecase/ruby_koans/blob/master/src/about_symbols.rb#L26 https://github.com/edgecase/ruby_koans/blob/master/src/about_symbols.rb#L26

def test_method_names_become_symbols
  symbols_as_strings = Symbol.all_symbols.map { |x| x.to_s }
  assert_equal true, symbols_as_strings.include?("test_method_names_become_symbols")
end


  # THINK ABOUT IT:
  #
  # Why do we convert the list of symbols to strings and then compare
  # against the string value rather than against symbols?

为什么我们必须首先将该列表转换为字符串?


这与符号的工作方式有关。对于每个符号,只有其中一个实际存在。在幕后,符号只是一个由名称(以冒号开头)引用的数字。因此,当比较两个符号的相等性时,您正在比较对象标识和not引用该符号的标识符的内容。

如果你要做简单的测试:测试==“测试”,这将是错误的。因此,如果要将迄今为止定义的所有符号收集到一个数组中,则需要先将它们转换为字符串,然后再进行比较。您不能以相反的方式执行此操作(首先将要比较的字符串转换为符号),因为这样做会创建该符号的单个实例,并用您正在测试是否存在的符号“污染”您的列表。

这有点奇怪,因为您必须测试符号是否存在,而不能在测试过程中意外创建该符号。您通常不会看到这样的代码。

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

Ruby Koans:为什么将符号列表转换为字符串 的相关文章

  • 如何在 Ruby 中列出局部变量?

    def method a 3 b 4 some method that gives a b end 局部变量 http ruby doc org core Kernel html method i local variables 它输出符号
  • 如何在 Ruby on Rails 中不使用 eval 将字符串转换为哈希值? [复制]

    这个问题在这里已经有答案了 这里是string需要转换成hash status gt label gt Status collection gt return misc definitions project status 我们不能使用ev
  • 如何覆盖 Ruby Ranges 的 .. 和 ... 运算符以接受 Float::INFINITY?

    我想覆盖 and Ruby 中的运算符Range 原因是 我正在处理数据库中的无限日期范围 如果你拉一个infinty从 Postgres 中取出日期时间 你会得到一个Float INFINITY在红宝石中 问题是 我无法使用Float I
  • 如何阻止与 RSpec 和 Capybara 的外部连接?

    在我的 Rails 项目中 我想编写非理想条件的测试 例如缺乏互联网连接或超时 例如 我正在使用 gem 来联系 API 并且希望确保在我的应用程序和外部 API 之间存在连接问题时能够正确处理错误 我已经可以通过用录像机制作固定装置并从
  • 转储 YAML 时如何强制使用双引号?

    我有一个小脚本来自动化 YAML 文件中的一些操作 我读取原始 YAML 文件并将其转换为哈希 然后dump http ruby doc org stdlib 1 8 6 libdoc yaml rdoc YAML html method
  • Watir 更改 Mozilla Firefox 首选项

    我正在使用 Watir 运行 Ruby 脚本来自动执行一些操作 我正在尝试自动将一些文件保存到某个目录 因此 在我的 Mozilla 设置中 我将默认下载目录设置为桌面并选择自动保存文件 然而 当我开始运行脚本时 这些更改并未反映出来 似乎
  • 拆分字符串以仅获取前 5 个字符

    我想去那个地点 var log src ap kernelmodule 10 001 100 但看起来我的代码必须处理 ap kernelmodule 10 002 100 ap kernelmodule 10 003 101 等 我想使用
  • ruby 中的 #encode 和 #force_encoding 有什么区别?

    我真的不明白之间的区别 encode and force encoding在 Ruby 中String班级 我明白那个 kam force encoding UTF 8 将迫使 kam 是UTF 8编码 但是怎么样 encode encod
  • 多重要求和允许强参数rails 4

    在下面的情况下 我尝试使用强参数 我想要求email address password并允许remember me fields 但像下面这样使用它只允许最后一行在方法示例中 在下面的情况下 它只需要params permit rememb
  • Rails:named_scope、lambda 和块

    我认为以下两个是等效的 named scope admin lambda company id conditions gt company id company id named scope admin lambda do company
  • 在 ruby​​ 中下载多个 FTP 文件,如 d*.txt

    我需要连接到 ftp 站点并下载一堆名为 D txt 的文件 最多 6 个 你能帮我用 Ruby 编写这个代码吗 下面的代码只是 ftp Net FTP new ftp server site ftp login user pwd ftp
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • ruby从1.8.7升级到1.9.2(使用Rails 3.1.1)后本地服务器错误

    我刚刚安装了rvm并使用rvm将ruby从1 8 7升级到1 9 2 我在我的应用程序上运行了捆绑安装 它重新安装了我的 gems 当我在本地运行 Rails 服务器并将浏览器导航到 localhost 3000 时 服务器日志中显示以下错
  • Ruby/Rails 集合到集合

    我有两个表与一个连接表连接 这只是伪代码 Library Book LibraryBooks 我需要做的是 如果我有一个图书馆的 id 我想获取该图书馆拥有的所有书籍所在的所有图书馆 因此 如果我有图书馆 1 图书馆 1 中有书籍 A 和
  • 存根和 rspec 旧语法的问题

    我正在编写一些代码并使用 rspec 但收到警告 提示语法已过时 我不太清楚应该如何编写它 it should calculate the value correctly do mock cards Card new clubs 5 Car
  • 使用rSpec 测试delayed_job 链的最佳方法是什么?

    目前 当我的代码中有一个延迟方法时 如下所示 CommentMailer delay deliver comments comment true 我在规范中写了这样的内容 dj mock DelayProxy CommentMailer s
  • Shoulda/RSpec 匹配器 - 条件验证

    在我的代码中 我使用 Shoulda 匹配器进行了以下验证 效果很好 it should validate presence of name 在我的模型中 我已将条件添加到验证中 validates presence of name if
  • 使用哈希参数进行 DRY Ruby 初始化

    我发现自己经常在构造函数中使用哈希参数 尤其是在为配置或最终用户将接触到的其他 API 编写 DSL 时 我最终做的是类似以下的事情 class Example PROPERTIES name age PROPERTIES each p a
  • 正则表达式的 o 修饰符是什么意思?

    Ruby 正则表达式有一些选项 例如i x m o i例如 意味着忽略大小写 什么是o选项是什么意思 在ri Regexp 它说o意味着执行 仅插值一次 但是当我这样做时 a one b a a two b不改变 它保持 one 我缺少什么
  • Watir Webdriver 加载 Chrome 扩展

    我正在尝试使用 Watir 加载 chrome 扩展 但遇到了问题 我发现这个相关问题 能够启动带有 watir webdriver 加载扩展的 chrome https stackoverflow com questions 125867

随机推荐

  • 有效地计算组合和排列

    我有一些代码来计算排列和组合 并且我正在努力使其更好地处理大量数字 我找到了一种更好的排列算法 可以避免大量的中间结果 但我仍然认为我可以在组合方面做得更好 到目前为止 我已经提出了一个特殊情况来反映 nCr 的对称性 但我仍然希望找到一种
  • WHERE col IN 以空数组作为参数的查询

    从例子where col in 示例 https github com vitaly t pg promise wiki Learn by Example where col in values and 这个答案 https stackov
  • 初始化的数组是否保留其顺序?

    假设我初始化一个数组有点像这样 int anArray 100 200 300 400 500 600 700 800 900 1000 是否保证元素始终按照我在初始化时输入的顺序插入 例如 100 200 300 400 500 600
  • Android Play 计费库:获取产品介绍价格?

    我正在研究使用新的播放计费库 https developer android com google play billing billing library html 我关心的一件事是产品介绍价格 我想知道是否有办法检索新图书馆的介绍价格
  • 如何将多个 gsoap 客户端 Web 服务编译为一个可执行文件?

    I using gSOAP对于网络服务 但我有一个问题必须 将 2 个 Web 服务编译成一个可执行文件 还有一些 函数具有相同的名称 而不是使用参数 函数名称的其他前缀 编译错误 X o In function soap get stri
  • C 中的文件结束符 - EOF

    你输入什么来结束程序 1 不起作用 include
  • 在 Google 可视化中单击按钮后绘制图表

    我试图弄清楚如何在单击按钮后绘制图表 我的代码似乎有问题 我使用 Google 可视化和 Javascript 来完成此活动 有人可以看一下吗 CODE
  • 使用 jQuery .attr 或 .prop 设置属性值不起作用

    我创建了一个按钮 其属性名为 loaded 初始值为 no 单击按钮后 我正在运行一些 ajax 并在最后尝试将 已加载 属性设置为 是 以便如果用户多次单击该按钮 ajax 就不会再次运行 我有这样的事情 http jsfiddle ne
  • 滚动条在 WebView 的

    我有包含滚动分区的 Html 文件 当我在 WebView 中添加此 HTML 时 它不会显示该 div 的滚动条 我在 Html 文件中有代码 some Html code table style border 3px solid bla
  • Xcode4 与 Mac OS X 10.4 SDK

    在 Xcode 的最新版本 Xcode 4 0 中 不再包含 10 4 SDK 但是 我仍然需要支持 10 4 和 PowerPC 版本 我已经安装了最新的 Xcode 3 2 6 它仍然包含 10 4 支持 然后我安装了Xcode4 有没
  • 使用 C# 向 USB 连接的 GPRS 调制解调器发送 AT 命令

    任何人都可以给我一个关于如何访问连接到 USB 端口的 GPRS 调制解调器的良好指示或指南 我应该为我的程序制作一个 USB 驱动程序以将 AT 命令发送到调制解调器吗 或者就像一个路由器 我可以使用IP地址访问它 谢谢 如果 Windo
  • JTable 计算正在使用的行数并返回该数字

    我正在做一个小项目 停车场表 它允许您添加 删除和搜索汽车 除此之外 它还意味着返回已经停放的汽车数量 我的问题是 如何编写一个代码来计算已使用的行数并返回正在使用的行数 大概通过按钮或通过标签自动更新 注意 抱歉造成混乱 import j
  • 如何检查命令是否可用或存在?

    我正在 Linux 上用 C 语言开发一个控制台应用程序 现在 它的可选部分 不是必需的 取决于可用的命令 二进制文件 如果我检查system 我越来越sh command not found作为不需要的输出 并将其检测为存在 那么我该如何
  • PasswordDeriveBytes 与 Rfc2898DeriveBytes,已过时但速度更快

    我正在开发基于从 SymmetricAlgorithm 继承的类 例如 TripleDes DES 等 的加密功能 基本上有两个选项可以为我的算法类生成一致的密钥和 IV PasswordDeriveBytes and Rfc2898Der
  • 无法在设备“emulator-5554”上安装 apk:超时

    我是 Android 开发新手 我尝试在此文件夹中运行 LunarLander 项目 根据示例创建新项目 C Program Files Android android sdk windows samples android 9 Lunar
  • 在 Android 10 上以编程方式断开 Wifi

    I use WifiNetworkSuggestion以编程方式将我的应用程序连接到我的热点 但是当我尝试以编程方式断开此连接时 我使用了removeNetworkSuggestions就像文档提到的那样 删除之前的部分或全部网络建议 由应
  • 在 PHP 中管理巨型数组

    我正在为某人对数百万条旧日志条目进行数据挖掘 并且真的想在这件事上使用 PHP 来呈现这些材料 并将它们轻松链接到现有的 PHP 系统 我在终端 OSX 10 8 的 PHP 5 4 4 中运行此代码 Settings ini set er
  • 如何在 R 中显式调用函数参数的默认值?

    如何告诉 R 使用函数参数的默认值 而无需 i 省略函数调用中的参数以及 ii 不知道默认值是什么 我知道我可以使用默认值mean in rnorm rnorm n 100 by omitting the argument or rnorm
  • 如何将 FormsAuthentication cookie 添加到 HttpClient HttpRequestMessage

    我试图通过调用 FormsAuthentication SetAuthCookie someUser false 来验证内部集成测试之后 我确实需要调用 WebAPI 并且不会收到未经授权的异常 因为我已经应用了授权属性 我正在使用此代码来
  • Ruby Koans:为什么将符号列表转换为字符串

    我指的是 Ruby Koans 中 about symbols rb 中的这个测试https github com edgecase ruby koans blob master src about symbols rb L26 https