📜  红宝石字面量

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

红宝石字面量

可以分配给变量的任何常量值都称为字面量/常量。我们每次在 ruby 代码中键入对象时都使用字面量。 Ruby 字面量与其他编程语言相同,只是稍作调整,此处有所不同。
这些是 Ruby 中的以下字面量。

  1. 布尔值和零
  2. 数字或整数
  3. 字符串
  4. 符号
  5. 范围
  6. 数组
  7. 哈希
  8. 常用表达

Ruby字面量的类型

  • 布尔值和 nil :
    这些是布尔常量。这里 false 和 nil 具有相同的行为,尽管 nil 表示未知或空。它的行为与条件语句中的 false 相同,但仅返回 true 或 false 常量。 true 表现相同表示正变量。
    true, false, nil

    例子:

    # Demo for Boolean literals
    puts(3+7==10);# returns true
    puts(3+7!=10);# returns false
    puts(3+7==nil);# return false
    

    输出:

    true
    false
    false
  • 数字或整数:
    Ruby 支持所有类型的整数。我们可以将任意大小的整数写成 100 或 1_00 或 10_0。出于可读性目的,Ruby 允许在其数字中包含任意数量的“_”。
    句法 :
    decimal(0d or 0D)
    octal(0o or 0O or 0)
    hex-decimal(0x or 0X)
    binary(0b or 0B).
    float(num- or numE1)
    

    例子 :

    puts("300+1_00+10_0=", 300+1_00+10_0 );
    puts("hexa-", 0xaa );
    puts("octal-", 0o222 );
    puts("decimal-", 0d170, " ", 170);
    puts("binary-", 0b1010);
    puts("Float-", 1.234E1);
    puts("hexa-", aa);# error
    

    输出 :

    300+1_00+10_0=500
    hexa-170
    octal-146
    decimal-170 170
    binary-10
    Float-12.34
    main.rb:9:in `': undefined local variable or method `aa' for main:Object (NameError)
    
  • 细绳 :
    它与Python相同。字符串可以用“”“”表示,其中“”允许转义字符进行插值。
    句法:
    #{expression}

    例子:

    puts( "Two multiply three is Six : #{2 * 3}")
    puts("guardians\nof\nthe\ngalaxy");
    puts('guardians\nof\nthe\ngalaxy')
    

    输出 :

    Two multiply three is Six: 6
    guardians
    of
    the
    galaxy
    guardians\nof\nthe\ngalaxy
    
  • 象征 :
    在 Ruby 中,符号代表解释器内部的名称。符号被放置在 ruby 的解释器中,并且从不被垃圾收集。因此,它会影响解释器的大小,无论是大量创建还是从未释放。
    句法 :
    ruby_symbol

    我们还可以通过插值创建符号键:

    puts(:":guardian_id#{20+1_5}")
    

    输出 :

    :guardian_id35
  • 范围:
    它类似于我们在Python range()中使用的那个。打印给定边界(包括)之间的所有可能值。
    句法 :
    range1..range2

    例子:

    for i in 2..5 do
        puts(i)
    end
    

    输出:

    2
    3
    4
    5
    
  • 大批 :
    数组是对象的集合,使用 '[' 和 ']' 创建。
    例子:
    # Code for Array Demo
    gog = ['Quill', 'Gamora', 'Rocket', 'Groot', 'Drax']
    puts(gog[0])
    puts(gog[2]) 
      
    # Negative indices are counted from the end
    print("Negative Index:", gog[-3], "\n\n")
      
    # [start, count]
    puts("[start, count]:", gog[0, 3], "\n")
      
    # Using ranges.
    # as range size exceeded it prints till full length
    puts("Using range:", gog[0..7])
    

    输出:

    Quill
    Rocket
    Negative Index:Rocket
    
    [start, count]:
    Quill
    Gamora
    Rocket
    
    Using range:
    Quill
    Gamora
    Rocket
    Groot
    Drax
    
  • 哈希:
    它类似于我们在Python中使用的那个。我们可以使用符号键创建哈希,因为它们一旦创建就不可更改,并且可以作为完美键。
    句法 :
    {key:value}

    例子:

    # way of creating hash
    hash1   = Hash.new
      
    # way of creating hash
    hash2   = {}
      
    # initializing values and keys
    hash1 = {"Quill" => 100, "Drax" => 200, "Gamora" => 300}
      
    # initializing values and keys with symbol keys
    hash2 = {Quill:1, Gamora:2}
    print(hash1.keys, "\n")
    print(hash2.keys, "\n")
    for i in hash2.keys do
      
    # : Should be used while checking before
    # its a part of the symbol key
        if i==:Quill 
      
        # Printing value and assigned key
            print(i, "=>", hash2[i], "\n")
        end
    end
    

    输出:

    ["Quill", "Drax", "Gamora"]
    [:Quill, :Gamora]
    Quill=>1
    
  • 正则表达式 :
    它类似于我们在 perl 中的{/pattern/}。 ruby 中的正则表达式可以使用或不使用分隔符来创建。
    句法 :
    /pattern/ or %r{pattern}

    我们可以使用符号键创建散列,因为它们一旦创建就不可更改,它们充当完美键。
    句法 :

    {key:value}

    例子:

    line1 = "guardians of the galaxy";
    line2 = "Doctor Strange";
      
    # Checks whether ‘of’ is in line1 in // format
    if ( line1 =~ /of(.*)/ )
       puts line1
    end
      
    # Checks whether ‘Doc’ is in line1 in %r{} format.
    if ( line2 =~ %r{Doc(.*)} )
       puts line2
    end
      
    # Checks whether ‘off’ is in line1 .
    if ( line2 =~ /off(.*)/ )
       puts line2
    else
        puts "nothing"
    end
    

    输出:

    guardians of the galaxy
    Doctor Strange
    nothing