2

私はこのような機能を持っています-

関数の名前は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ブロックの場合、これが何を意味するのか理解できないのはそのためですか?

4

1 に答える 1

7

?メソッド名の有効な文字です。

trueこれは通常、またはを返すメソッドを示すために使用されますfalse

例えば:

注:!も有効な文字です。これは通常、「破壊的な」方法を示すために使用されます


さらに一歩進んだい場合は、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
于 2012-12-05T09:44:55.783 に答える