在Ruby中,符号(Symbol)和字面量(Literal)是两种不同的概念,但它们都可以用来表示固定的值。下面分别介绍它们的定义和用法。
符号(Symbol)
:my_symbol
或 :hello_world
。# 创建符号
sym1 = :my_symbol
sym2 = :hello_world
# 符号作为方法的参数
def my_method(sym)
puts "The symbol is: #{sym}"
end
my_method(sym1) # 输出:The symbol is: :my_symbol
# 符号作为哈希的键
hash = {sym1 => "value1", sym2 => "value2"}
puts hash[:my_symbol] # 输出:value1
字面量(Literal)
123
表示数字,"hello"
表示字符串,true
表示布尔值等。# 数字字面量
num = 123
puts num # 输出:123
# 字符串字面量
str = "hello"
puts str # 输出:hello
# 布尔字面量
bool = true
puts bool # 输出:true
# 数组字面量
arr = [1, 2, 3, 4, 5]
puts arr.inspect # 输出:[1, 2, 3, 4, 5]
# 哈希字面量
hash = {a: 1, b: 2, c: 3}
puts hash.inspect # 输出:{:a=>1, :b=>2, :c=>3}
总结:符号和字面量都是Ruby中表示固定值的方式,但它们具有不同的特性和用途。符号是不可变的、唯一的标识符,通常用于表示方法名、变量名等;而字面量则是直接表示固定值的表示法,可以用于表示数字、字符串、布尔值等。