从ruby shell调用getTitle函数时抛出错误
“未初始化的常量getTitle”
而全名工作正常。
gettitle有什么问题?

def GetTitle(pageTitle = '')
  baseTitle = "Base Title"
  if pageTitle.empty?
    baseTitle
  else
    pageTitle + " | " + baseTitle
  end
end

def full_title(page_title = '')
  base_title = "Ruby on Rails Tutorial Sample App"
  if page_title.empty?
    base_title
  else
    page_title + " | " + base_title
  end
end

最佳答案

在ruby中,按照惯例,常量以大写字母开头。因此,当您调用GetTitle时,它被视为一个常量,您会得到适当的错误(因为没有这样的常量)。但是,如果使用参数调用它,它将起作用。这是因为参数ruby将其解释为一个方法。在这里:

GetTitle
# NameError: uninitialized constant GetTitle
GetTitle('abc')
#=> "abc | Base Title"

您也可以使用空括号使ruby相信它是一个方法:
GetTitle()
#=> "Base Title"

This answer explains it beautifully

关于ruby - 这两个 ruby 功能有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33318950/

10-09 15:15