Ruby 符号类

Ruby 符号类

符号类的对象代表Ruby解释器中的名字。它们通常通过使用 :name literal 语法或使用 to_sym 方法生成。类似的Symbol对象会在程序执行期间为一个给定的名字字符串创建,而不考虑名字的内容和含义。

例子

# Ruby program to illustrate 
# Symbol objects
  
# context 3
module Geeks1
  
class Max
end
a1 = :Max
end
  
# context 1
module Geeks2
  
Max = 1a2 = :Max
end
  
# context 2
def Max()
  
end
  
a3 = :Max
  
putsa1.object_id 
puts a2.object_id 
putsa3.object_id 

输出

1675428
1675428
1675428

解释: 如果Max在上下文1中是常数,在上下文2中是方法,在上下文3中是类,那么这个: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
"
#
$
%
&
'
(
)
*
+
,
-
.
/
:
;
<
=
>
?

实例方法

  1. 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"
  1. inspect : 该方法以符号字面的形式返回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\""
  1. to_s : 该方法与Symbol#id2name类似。该方法返回对应于符号的名称或字符串。
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"
  1. ** <=> : ** 它在调用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
  1. == : 如果符号等于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
  1. [] : 该方法返回sym.to_s[]的值。
sym[idx] --> char 
sym[b, n] --> string
  1. capitalize : 这个方法类似于Symbol#to_s。
sym.capitalize
  1. casecmp : 这个方法是符号<=$gt;的不区分大小写的版本。它将返回-1、0、1或nil。它适用于A-Z/a-z,而不是所有的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
  1. downcase : 这种方法将大写字母转换为小写字母。
sym.downcase

示例:

# Ruby program to illustrate 
# use of the downcase method
  
# Using the downcase method
puts :"WELCOME TO GEEKSFORGEEKS".downcase

输出:

:"welcome to geeksforgeeks"
  1. length : 该方法返回给定符号的长度。
sym.length

示例:

# Ruby program to illustrate 
# use of length method
  
# Using length method
puts :GeeKsGfg.length

输出:

8
  1. slice : 这个方法与Symbol#to_s类似。这个方法为你提供了从符号的给定索引上的字符。
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"
  1. swapcase : 这个方法是对sym.com中的字符进行大小写转换。换句话说,它将小写字母转换成大写字母,将大写字母转换成小写字母。
sym.swapcase

示例:

# Ruby program to illustrate 
# use of the swapcase method
  
# Using swapcase method
p "WELcome TO geeksFORGEEKS".swapcase

输出:

"welCOME to GEEKSforgeeks"
  1. upcase : 这种方法将小写字母转换为大写字母。
sym.upcase

示例:

# Ruby program to illustrate 
# use of the upcase method
  
# Using upcase method
p "welcome to geeksforgeeks".upcase

输出:

"WELCOME TO GEEKSFORGEEKS"
  1. 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"]
  1. to_sym 该方法返回一个对应于对象的符号。这里sym已经是一个符号了,所以在这种情况下它会返回它。
sym.to_sym

参考资料: https://ruby-doc.org/core-2.5.0/Symbol.html#method-i-5B-5D

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程