问号在ruby中的函数定义中意味着什么?

时间:2012-12-05 09:43:26

标签: ruby

我有这样的功能 -

函数的名称是seld.is_dl,它接受路径参数。我的问题是函数定义中的?符号表示什么。

def self.is_dl?(path)

  path = File.basename(path)

  if path =~ /setup.exe/i

    return false

  else

    return true

  end

end

我是java开发人员,我看过“?”在主要是If-ELSE块的情况下,这就是为什么我无法确定这是什么意思?

1 个答案:

答案 0 :(得分:7)

?是方法名称中的有效字符。

它通常用于表示返回truefalse

的方法

例如:

注意:!也是有效字符。它通常用于表示“破坏性”方法


如果你想加倍努力,Ruby在技术上允许任何字符串作为方法名称。奇怪的需要define_method()send()来电,但正式没有限制。

module Hello

  class << self
    define_method "this is my method :)" do |foo|
      puts "you gave my method #{foo}"
    end

    define_method "this isn't your method :(, sorry" do
      puts "sorry, not your method, bro"
    end
  end

end

Hello.send("this is my method :)", "candy")
#=> you gave my method candy

Hello.send("this isn't your method :(, sorry")
#=> sorry, not your method, bro