红宝石 |符号类
Symbol 类的对象代表 Ruby 解释器中存在的名称。它们通常使用:name字面量语法或使用to_sym方法生成。无论名称的内容和含义如何,在程序执行期间为给定的名称字符串创建类似的符号对象。
例子:
# Ruby program to illustrate
# Symbol objects
# context 3
module Geeks1
class Max
end
$a1 = :Max
end
# context 1
module Geeks2
Max = 1
$a2 = :Max
end
# context 2
def Max()
end
$a3 = :Max
puts $a1.object_id
puts $a2.object_id
puts $a3.object_id
输出:
1675428
1675428
1675428
解释:如果 Max 是 context1 中的常量、context2 中的方法或 context3 中的类,那么 this :Max在所有给定的上下文中都是同一个对象。
类方法
all_symbols :此方法返回当前存在于 Ruby 符号表中的符号数组。
Symbol.all_symbols
例子:
# Ruby program to illustrate
# the use of all_symbol method
# Using all_symbol method
puts Symbol.all_symbols.size
puts Symbol.all_symbols[1, 20]
输出:
3250
"
#
$
%
&
'
(
)
*
+
,
-
.
/
:
;
<
=
>
?
实例方法
- id2name :此方法返回一个表示sym的字符串。
sym.id2name
例子:
# Ruby program to illustrate # the use of id2name method # Using id2name method p :Geeks.id2name p :"Welcome to GeeksforGeeks Portal".id2name
输出:
"Geeks" "Welcome to GeeksforGeeks Portal"
- 检查:此方法以符号字面量的形式返回sym的表示。
sym.inspect
例子:
# Ruby program to illustrate # the use of inspect method # Using inspect method p :geeks.inspect p :"welcome to geeksforgeeks portal".inspect
输出:
":geeks" ":\"welcome to geeksforgeeks portal\""
- to_s :此方法类似于 Symbol#id2name。该方法返回sym对应的名称或字符串。
sym.to_s
例子:
# Ruby program to illustrate # the use of to_s method # Using to_s method p :geeks.to_s p :"welcome to geeksforgeeks portal".to_s
输出:
"geeks" "welcome to geeksforgeeks portal"
- <=> :它在调用 to_s 后将sym与other_sym进行比较。如果sym小于other_sym则返回 -1,如果sym等于other_sym则返回 0,如果sym大于other_sym则返回 +1。
sym <=> other_sym
例子:
# Ruby program to illustrate # use of <=> # Using <=> a= :geeks b = :"welcome to geeksforgeeks portal" puts a<=>b c= :geeks puts a<=>c puts b<=>a
输出:
-1 0 1
- == :如果sym等于obj则返回 true,否则返回 false。
sym== obj
例子:
# Ruby program to illustrate # use of == # Using == a= :geeks b = :"welcome to geeksforgeeks portal" puts a==b c= :geeks puts a==c
输出:
false true
- [] :此方法返回 sym.to_s[] 的值。
sym[idx] --> char sym[b, n] --> string
- 大写:此方法类似于 Symbol#to_s。
sym.capitalize
- casecmp :此方法是符号 <=$gt; 的不区分大小写版本。它将返回 -1、0、1 或 nil。它适用于 AZ/az,而不适用于所有 Unicode。在此方法中,当两个符号的编码不兼容或other_sym不是符号时,将返回nil 。
sym.casecmp(other)
例子:
# Ruby program to illustrate # use of casecmp method # Using casecmp method puts :GeeKs.casecmp(:geeks) puts :GeeKsGfg.casecmp(:geeksG) puts :GeeKsGfg.casecmp(:geeksGfgz) puts :GeeKsGfg.casecmp(3)
输出:
0 1 -1 nil
- downcase :此方法将大写字母转换为小写。
sym.downcase
例子:
# Ruby program to illustrate # use of the downcase method # Using the downcase method puts :"WELCOME TO GEEKSFORGEEKS".downcase
输出:
:"welcome to geeksforgeeks"
- length :此方法返回给定sym的长度。
sym.length
例子:
# Ruby program to illustrate # use of length method # Using length method puts :GeeKsGfg.length
输出:
8
- slice :此方法类似于Symbol#to_s 。此方法为您提供sym给定索引上的字符。
sym.slice(index) sym.slice(b, n)
例子:
# Ruby program to illustrate # use of slice method # Using slice method p :GeeKsGfg.slice(3) p :GeeKsGfg.slice(6)
输出:
"K" "f"
- swapcase:此方法交换sym中出现的字符的大小写。换句话说,它将小写转换为大写,将大写转换为小写。
sym.swapcase
例子:
# Ruby program to illustrate # use of the swapcase method # Using swapcase method p "WELcome TO geeksFORGEEKS".swapcase
输出:
"welCOME to GEEKSforgeeks"
- upcase :此方法将小写字符转换为大写。
sym.upcase
例子:
# Ruby program to illustrate # use of the upcase method # Using upcase method p "welcome to geeksforgeeks".upcase
输出:
"WELCOME TO GEEKSFORGEEKS"
- to_proc :此方法返回一个Proc对象,该对象通过sym回答给定的方法。
sym.to_proc
例子:
# Ruby program to illustrate # use of to_proc method # Using to_proc method p (1..5).collect(&:to_s)
输出:
["1", "2", "3", "4", "5"]
- to_sym该方法返回一个对应于对象的符号。这里 sym 已经是一个符号,所以在这种情况下它会返回它。
sym.to_sym
参考: https://ruby-doc.org/core-2.5.0/Symbol.html#method-i-5B-5D