首页 > 解决方案 > 我试过用常量参数名称在 ruby​​ 中定义一个函数,为什么会抛出错误?

问题描述

每当我尝试做def foo(CONST1, CONST2)...时,它总是会出错,即使只有函数名是常量。


# Error!
def foo (BAR, BAZ)
   puts BAR + BAZ
end

标签: rubysyntaxparametersconstants

解决方案


Ruby 是一种异常区分大小写的语言,因此您不能做某些事情,因为大写字母具有语法意义。其他语言不关心,但 Ruby 关心。

例如,您的方法参数必须是变量。您不能在此处定义常量。开头的大写字母表示常数,没有例外。

您应该将其定义为:

def foo(const1, const2)
  # ..
end

一些规则:

  • 方法名称、变量和参数是lower_case.
  • 类和模块分别遵循ClassNameModuleName。这些是技术常数。
  • 其他常量定义为CONSTANT_NAME

我不确定你想通过定义“常量参数名称”来实现什么,所以如果你能解释一下,也许这里有更好的答案。


推荐阅读