小编Ste*_*ang的帖子

ruby方法名称的大写和小写规则是什么?

我是Ruby初学者.从本书中,我知道Ruby方法名称应该以小写字母或下划线开头.但我发现了不同的场景:

  1. 如果在类外部定义了一个方法,它只能以小写字母开头,如果你试图定义一个以大写字母开头的方法,Ruby会抱怨错误,例如:

    define sayHi
      puts "Hello" 
    end
    sayHi   # => Hello
    
    Run Code Online (Sandbox Code Playgroud)

    但是,以下代码不起作用:

    define SayHi
      puts "Hello" 
    end
    SayHi 
    
    Run Code Online (Sandbox Code Playgroud)

    它会产生错误:

    :in `<main>': uninitialized constant SayHi (NameError)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果在类中定义了一个方法,那么它可以以大写字母开头:

    class Test
      def SayHi
        puts "hello" 
      end
    end
    t = Test.new
    t.SayHi    # => hello
    
    Run Code Online (Sandbox Code Playgroud)

有谁知道为什么#1在#2工作时不起作用?ruby方法名称的确切规则是什么?

ruby

16
推荐指数
1
解决办法
5419
查看次数

这个反引红宝石代码是什么意思?

while line = gets
   next if line =~ /^\s*#/    # skip comments
   break if line =~ /^END/   # stop at end

   #substitute stuff in backticks and try again
   redo if line.gsub!(/`(.*?)`/) { eval($1) } 
Run Code Online (Sandbox Code Playgroud)

结束

我不明白的是这一行:

line.gsub!(/`(.*?)`/) { eval($1) }
Run Code Online (Sandbox Code Playgroud)
  1. 什么是gsub!到底怎么办?
  2. 正则表达式的含义(.*?)
  3. 块的含义{eval($ 1)}

ruby regex

2
推荐指数
1
解决办法
1239
查看次数

标签 统计

ruby ×2

regex ×1