Sobes.tech
Middle

Оператор '===' дар Ruby чист?

sobes.tech AI

Ҷавоб аз AI

Ҳамла === (учтўқ равшанлик) дар Ruby номида мешавад оператори баробарии ҳолат (case equality operator).

Он дар изразҳои case/when истифода мешавад ва аз ҷониби синфҳо барои санҷидани он ки оё операнди рост ба "категория" ё "ҳадди ақал" ки аз ҷониби операнди чап намоиш дода шудааст, тааллуқ дорад.

Равоншавии оператори === аз синфи операнди чап вобаста аст.

Масалан:

  • Синфи Module: Санҷед, ки оё операнди рост намуна ё фарзанди модул/класа мебошад.
    # Санҷед, ки оё операнди рост намунаи String ё фарзанди он мебошад.
    String === "hello"
    # => true
    
  • Синфи Range: Санҷед, ки оё операнди рост дар диапазон аст.
    # Санҷед, ки оё 5 дар диапазони 1..10 аст.
    (1..10) === 5
    # => true
    
  • Синфи Regexp: Санҷед, ки оё матн мувофиқ ба ибораҳои муқарраршуда мебошад.
    # Санҷед, ки оё матни "/ruby/" ба /ruby/ мувофиқ аст.
    /ruby/ === "/ruby/"
    # => true
    
  • Синфи Proc: Блокро бо операнди рост ҳамчун аргумент даъват мекунад.
    # Блокро бо аргументи 5 даъват мекунад.
    ->(x) { x > 3 } === 5
    # => true
    
  • Синфи Symbol: Символро бо матн ё символи дигар муқоиса мекунад.
    # Символи :test-ро бо матни "test" муқоиса мекунад.
    :test === "test"
    # => true
    

Дар бисёр синфҳои дигар, === ҳамчун == амал мекунад.

Истифода дар case/when:

Ифодаи case condition баробар ба силсилавораҳои даъвати === дар ҳар арзиш барои when бо condition ҳамчун операнди рост.

# Баробар бо String === value
# Пас Integer === value
case value
when String
  # ...
when Integer
  # ...
end