Ruby 中的字符串和符号有什么区别?

2023-12-07

Ruby 中的字符串和符号有什么区别?什么时候应该使用其中一种?


主要区别在于表示单个值的多个符号是相同的,而字符串则不然。例如:

irb(main):007:0> :test.object_id
=> 83618
irb(main):008:0> :test.object_id
=> 83618
irb(main):009:0> :test.object_id
=> 83618

这是对符号的三个引用:test,它们都是同一个对象。

irb(main):010:0> "test".object_id
=> -605770378
irb(main):011:0> "test".object_id
=> -605779298
irb(main):012:0> "test".object_id
=> -605784948

这是对字符串“test”的三个引用,但都是不同的对象。

这意味着使用符号可能会节省大量内存,具体取决于应用程序。比较符号是否相等也更快,因为它们是同一个对象,比较相同的字符串要慢得多,因为需要比较字符串值而不仅仅是对象 ID。

至于何时使用哪个,我通常对几乎所有内容都使用字符串,除了像散列键这样的东西,我真正想要一个唯一的标识符,而不是字符串。

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

Ruby 中的字符串和符号有什么区别? 的相关文章

  • String.contains() 的时间复杂度

    String contains 的时间复杂度是多少 假设 n 是与另一个长度为 k 的字符串进行比较的字符串的长度 如果不知道您感兴趣的 String contains 的实际实现 就没有答案 或者你打算使用什么算法 一个完全幼稚的实现可能
  • 回形针:样式取决于模型(has_many 多态图像)

    我已将模型设置为使用多态图像模型 这工作正常 但是我想知道是否可以更改每个模型的 styles 设置 找到了一些使用 STI 模型 Art has many images as gt imageable Image belongs to i
  • c++ 最大 std::string 长度由堆栈大小或堆大小决定?

    正如问题中所问 std string myVar 它可以容纳的最大字符是由堆栈还是堆决定的 谢谢 默认情况下 分配的内存为std string是动态分配的 注意std string has a max size 函数返回实现支持的最大字符数
  • 从文件 C 中的单行读取多个变量类型

    好吧 我一整天都在做这个 但我一辈子都无法把它记下来 也许你们可以帮忙 我有一个文件 内容如下 1301 105515018 水手长 迈克尔 R ABC 123 R01 1301 103993269 卡斯蒂利亚 小迈克尔 ABC 123 R
  • ruby 管道、IO 和 stderr 重定向

    我希望有一个 ruby 程序 一个 rake 任务 观察另一个 rake 任务的输出 输出写入器输出到 stderr 我想读一下这些行 我很难设置它 如果我有一个作家 stdout writer rb 不断打印一些东西 usr bin en
  • C 中带有指针的 For 循环

    我不明白指针在其中的作用for loop 什么是 p在下面的循环中做什么 char str 128 Some Text char p for p str p what does this mean p Code 其余的我都明白 但为什么不明
  • 在 vc++ 中将 'System::String ^' 转换为 'const char *'

    如何在 vc 中将 System String 转换为 const char My code String Result1 C Users Dev Desktop imag jpg IplImage img1 cvLoadImage Res
  • 在 C# 中替换文本,同时保持大小写不变

    我有一组句子需要用来进行替换 例如 abc gt cde ab df gt de 我有一个文本可以在哪里进行更改 但是我无法事先知道所述文本的大小写 因此 举例来说 如果我有 A bgt abc hyi Abc Ab df h 我必须更换并
  • RSpec 2 中使用 OR 相等

    下面这个例子的正确写法是什么 玩家的分数应等于 5 或 8 it should equal 5 or 8 do player score should 5 or 8 end Thanks Tim 5 or 8将始终产生结果 5 并且不会执行
  • Rails 递归地包含 javascripts 资源文件夹

    我了解如何将一个 JavaScript 文件添加到 Rails 资产管道中 只需添加 require filename 到 application js 但是如何在一个文件夹下包含多个 javascript 文件 vendor assets
  • realloc():重新分配为 char * 上的 strcat 腾出空间时下一个大小无效 [重复]

    这个问题在这里已经有答案了 我在以下代码中收到无效内存错误 printf s n FINE 5 printf s LENGTH IS d n FINE 6 strlen buffer char realloc buffer strlen b
  • 为 Rails 上的 postgresql 创建用户

    我选择 postgresql 作为我的 Rails 数据库 但当我尝试运行 rake db create all 时 我遇到了一个明显常见的错误 即 致命 角色 app 不存在 我找到了两种解决方案 但我不确定哪一种是正确的 有一个网站说
  • 添加两个 ActiveRecord::Relation 对象[重复]

    这个问题在这里已经有答案了 如何将两个关系添加在一起 当我尝试 运算符时 它返回一个数组 但我需要它来返回关系 谢谢 麦克风 Try new relation relation merge another relation
  • 在 Yosemite 上安装 Ruby 1.9.2 时出错

    我在 Yosemite 上使用 rvm 安装 ruby 1 9 2 时遇到错误 有人可以帮助我吗 我更新了自制程序和rvm 我正在与其他人合作处理这个项目 所以我无法升级 ruby 我在下面放置了我的输出的链接 提前致谢 Kanyons M
  • R 中的字符串作为函数参数

    数据框chocolates列出了糖果的类型以及每种糖果的一组评级 ID sweetness filling crash snickers 0 67 0 55 0 40 milky way 0 81 0 53 0 56 我正在编写一个函数 它
  • Rails 4 可安装引擎,找不到文件“jquery”

    我正在创建一个 Rails 可安装引擎插件 它使用 gem jquery rails 我在 gemspec 文件中添加了这段代码 s add dependency jquery rails gt 3 0 1 and run bundle i
  • Cucumber / Savon 省略或删除日志输出

    在运行黄瓜测试时 我得到 除了测试结果之外 许多与调试 日志相关的输出 格式如下 D 2013 03 06T12 21 38 911829 49031 DEBUG SOAP request D 2013 03 06T12 21 38 911
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • 使用 Mountain Lion、Xcode 4.5 和 RVM 安装 Ruby?

    rvm install 1 9 3 with gcc clang 根据建议无法使用 RVM 在 Lion 下安装 Ruby GCC 问题 https stackoverflow com questions 8032824 cant inst
  • Rails:Passenger Standalone 适合生产部署吗?

    问题标题几乎概括了这一点 我找不到任何好的资源来概述使用 Phusion Passenger Standalone 进行 Rails 应用程序部署的优点 缺点 它与运行 Passenger Nginx 或 Passenger Apache

随机推荐

  • JSON4s 找不到带 Spark 的构造函数

    我在尝试在 Spark 作业中解析 json 时遇到了问题 我使用的是 Spark 1 1 0 json4s 和 Cassandra Spark 连接器以及 DSE 4 6 抛出的异常是 org json4s package Mapping
  • 适当的CSS以确保body元素填满整个屏幕

    我的身体元素有问题 似乎 100 占满了屏幕 但是 如果您将浏览器拖动得较小 然后向下滚动 则主体不会扩展 请参见这个jsFiddle作为一个很好的例子 height 100 是您网站显示的窗口的高度 而不是网站的高度 这会导致向下滚动时背
  • TPL数据流处理N条最新消息

    我正在尝试创建某种队列来处理收到的 N 个最新消息 现在我有这个 private static void SetupMessaging messagingBroadcastBlock new BroadcastBlock
  • 页面加载超时 - 使用 C# 的 Selenium Webdriver

    我正在使用 Selenium 2 25 WebDriver 我在查找页面上的元素时遇到问题 有时我的测试用例能够找到元素 有时页面未加载 这是由于页面加载所致 如果我在下面添加此行 它似乎可以工作 driver Manage Timeout
  • 无法加载库 plpython3.dll

    我在 Postgresql 版本 10 中创建扩展时遇到错误 无法加载库 C Program Files PostgreSQL 10 lib plpython3 dll 找不到指定的模块 CREATE EXTENSION plpython3
  • 我如何/我可以通过 JavaScript 访问 sessionid cookie?

    我已经安装了 jquery 的 cookie 扩展 并且正在尝试访问会话 id cookie 我的会话当前有两个 cookie 请参阅下面的屏幕截图 然而 cookie 只列出了一个 gt cookie Object csrftoken f
  • Rcpp:处理 NumericMatrix 时,* 的语法糖会产生意想不到的结果

    最近被问到的一个问题让我相信语法糖 by Rcpp不按预期工作 在链接的问题中 用户试图将矩阵乘以标量 R code 这就是我们想要实现的目标Rcpp 但现在简单地说R gt m lt matrix 0 3 2 2 gt m 3 1 2 1
  • 旋转轴刻度标签

    我不知道如何在 X 轴上旋转文本 它是一个时间戳 因此随着样本数量的增加 它们会越来越近 直到重叠 我想将文本旋转 90 度 这样当样本靠得更近时 它们就不会重叠 下面是我所拥有的 它工作正常 但我不知道如何旋转 X 轴文本 import
  • 计算每年两个日期之间的天数

    我有一个数据框 每行都有开始日期和结束日期 我想计算两个日期之间的天数并按年份分割 所以从这里开始 id lt c 1 2 3 start lt as Date c 01 01 2015 01 01 2016 07 01 2015 form
  • JWT 的安全性如何

    我知道这个问题不是什么新鲜事 可能已经在互联网上讨论过 我是新手 但经过一些研究 我同意它是安全的 因为匿名可以嗅探令牌但无法在其上附加任何内容 我计划将 JWT 存储在 HTML5Storage 中 并解码有效负载以获取一些不敏感信息 D
  • WCF IErrorHandler 扩展未返回指定的故障

    希望有一些 WCF 向导能够发现我的错误 我正在尝试通过 RESTful JSON WCF 服务上基于 IErrorHandler 的行为扩展来设置全局错误处理程序 该方法被修饰如下 OperationContract WebGet Uri
  • 用户脚本隐藏跨域 iframe 的子节点

    我想通过 Tampermonkey 用户脚本隐藏其中包含一些单词的注释 作为一个例子 我尝试应用一个脚本 UserScript name Hide CNN match http www cnn com require http ajax g
  • 我可以将 varbinary 的最大大小设置为 2 MB 吗?

    据我所知 您可以 手动 定义的最大值是8000 gt varbinary 8000 据我所知 这意味着8000 bytes gt 7 8125 KByte 是否可以将 max 设置为2 MB 类似的东西varbinary 2097152 或
  • 通过其内部字段获取枚举

    有带有内部字段的枚举 类似地图 现在我需要通过其内部字段获取枚举 写了这个 package test Test enum to test enum public enum TestEnum ONE 1 TWO 2 THREE 3 priva
  • node.js 相当于 python 的 if __name__ == '__main__' [重复]

    这个问题在这里已经有答案了 我想检查我的模块是否被包含或直接运行 我怎样才能在node js中做到这一点 Node js 文档描述另一种方法来做到这一点 这可能是首选方法 当文件直接从 Node 运行时 require main 将设置为其
  • 配置:错误:C编译器无法创建可执行文件-Buildozer kivy到android调试

    输入我的问题 他们可以跳过它 您好 我正在尝试编译 apk 应用程序 但由于缺少我的系统未带来的库和应用程序以及 buildozer 和 kivy 要求中未提及的库和应用程序 我总是遇到很多问题 在安装了很多库来解决以前的问题后 我陷入了这
  • 如何使用 WordPress 链接多个 CSS 文件

    我知道要链接您的 WordPress 主目录style css您使用的文件 然而 我有相当多的 CSS 文件需要链接到主 PHP 文件 例如滑块 图片框等 我不太确定我会怎么做 因为仅适用于名为的样式表styles css我的其他样式表都有
  • Java方法声明中参数的最大数量

    Java 中的方法可以拥有的最大参数数量是多少 为什么 我在 64 位 Windows 系统上使用 Java 1 8 StackOverflow 上所有关于此问题的答案都说技术限制是 255 个参数 但没有具体说明原因 准确地说 静态为 2
  • 使用字典将 alamofire 中的 JSON 数据解析为数组

    我正在尝试解析来自 alamorefire 的 JSON 数据 如下所示 import UIKit import Alamofire import SwiftyJSON class ViewController UIViewControll
  • Ruby 中的字符串和符号有什么区别?

    Ruby 中的字符串和符号有什么区别 什么时候应该使用其中一种 主要区别在于表示单个值的多个符号是相同的 而字符串则不然 例如 irb main 007 0 gt test object id gt 83618 irb main 008 0