📜  红宝石 |符号类

📅  最后修改于: 2022-05-13 01:54:22.656000             🧑  作者: Mango

红宝石 |符号类

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
"
#
$
%
&
'
(
)
*
+
,
-
.
/
:
;
<
=
>
?

实例方法

  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"
    
  2. 检查:此方法以符号字面量的形式返回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\""
    
  3. 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"
    
  4. <=> :它在调用 to_s 后将symother_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
    
  5. == :如果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
    
  6. [] :此方法返回 sym.to_s[] 的值。
    sym[idx] --> char 
    sym[b, n] --> string
    
  7. 大写:此方法类似于 Symbol#to_s。
    sym.capitalize
  8. 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
  9. downcase :此方法将大写字母转换为小写。
    sym.downcase

    例子:

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

    输出:

    :"welcome to geeksforgeeks"
  10. length :此方法返回给定sym的长度。
    sym.length

    例子:

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

    输出:

    8
  11. 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"
    
  12. swapcase:此方法交换sym中出现的字符的大小写。换句话说,它将小写转换为大写,将大写转换为小写。
    sym.swapcase

    例子:

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

    输出:

    "welCOME to GEEKSforgeeks"
  13. upcase :此方法将小写字符转换为大写。
    sym.upcase

    例子:

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

    输出:

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

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