符号与字符串
了解何时使用符号
符号与字符串 是 CoddyKit 上的免费 Ruby Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ruby Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ruby Academy 课程共包含 4 节课。
什么是符号?
符号是一种轻量且不可变的名称,开头带有冒号,例如 :name。符号通常用作标识符和哈希键。
status = :active
puts status
puts status.class符号不可变
与字符串不同,符号无法更改。:hello 一旦存在,就会永远保持不变。
puts :hello.frozen?
puts "hello".frozen?相同符号是同一个对象
同一个符号的每次使用都会指向内存中的同一个共享对象。两个内容相同的字符串通常是不同的对象。
puts :ruby.object_id == :ruby.object_id
puts "ruby".object_id == "ruby".object_id符号为何节省内存
由于相同的符号共享一个对象,因此反复使用符号作为键可以节省内存。字符串则会在每次使用时创建新对象。
ids = [:a, :a, :a]
puts ids.map(&:object_id).uniq.length在两者之间转换
使用 to_sym 将字符串转换为符号,使用 to_s 进行反向转换。
word = "color"
sym = word.to_sym
puts sym
puts sym.to_s.upcase将符号用作哈希键
符号是 Ruby 中最常见的哈希键,因为它们访问速度快且永不改变。
person = { name: "Ada", age: 36 }
puts person[:name]
puts person[:age]简写语法
当键为符号时,name: "Ada" 是 :name => "Ada" 的简写形式。两种写法都会创建符号键。
a = { color: "red" }
b = { :color => "red" }
puts a == b在方法调用中使用符号
符号可以为 send 和 map(&:method) 等工具指定方法名称。&:upcase 形式会将符号转换为代码块。
words = ["a", "b", "c"]
puts words.map(&:upcase).inspect何时使用字符串
当值是要显示、构建或更改的数据时,请使用字符串,例如名称、消息和文件内容。字符串提供了丰富的文本处理方法。
greeting = "Hello"
greeting << ", world"
puts greeting何时使用符号
对于固定的标识符,请使用符号,例如哈希键、状态和选项名称。符号可以表达您的意图,也不会意外发生变化。
def move(direction)
puts "Moving #{direction}"
end
move(:north)比较符号和字符串
由相同字母组成的符号和字符串并不相等。它们属于不同的类型。
puts :name == "name"
puts :name.to_s == "name"快速检查
请判断您对符号的了解程度。
回顾
现在您已经了解两者的区别:
- 符号不可变且共享,适合作为键和标识符
- 字符串是可变的文本数据
- 使用
to_sym和to_s进行转换 :a == "a"的结果是 false
接下来:创建和读取哈希。
config = { mode: :fast }
puts config[:mode]常见问题解答
「符号与字符串」课时是免费的吗?
是的 — 「符号与字符串」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ruby Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ruby Academy 课程共包含 4 节课。
「符号与字符串」这节课中我会学到什么?
了解何时使用符号 你通过在浏览器中直接运行的动手代码来练习 Ruby Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Ruby Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Ruby Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「符号与字符串」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Ruby Academy 课中编写并运行代码吗?
能。每节 Ruby Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。