Ruby:关于定义方法的困惑

Ruby:关于定义方法的困惑,ruby,methods,function,Ruby,Methods,Function,所以,这里是我的代码和我的困惑,这对其他人来说可能很明显,但由于我对Ruby还是相当陌生,所以我没有意识到这一点。我不明白的是第1行和第2行的“def秘密配方(PH)”和“果冻豆=PH*500” 我可以把任何东西放在“PH”的位置,它也可以工作,但是代码如何理解我有“PH”的地方使用的是“起始点”数字?为什么我没有出错?在第1行的“def secret_formula(PH)”后面加上“()”有什么意义 def secret_formala(PH) jelly_beans = PH *

所以,这里是我的代码和我的困惑,这对其他人来说可能很明显,但由于我对Ruby还是相当陌生,所以我没有意识到这一点。我不明白的是第1行和第2行的“def秘密配方(PH)”和“果冻豆=PH*500”

我可以把任何东西放在“PH”的位置,它也可以工作,但是代码如何理解我有“PH”的地方使用的是“起始点”数字?为什么我没有出错?在第1行的“def secret_formula(PH)”后面加上“()”有什么意义

def secret_formala(PH)
    jelly_beans = PH * 500
    jars = jelly_beans / 1000
    crates = jars / 100
    return jelly_beans, jars, crates
end

start_point = 10000
beans, jars, crates = secret_formala(start_point)

puts "With a starting point of: #{start_point}"
puts "We'd have #{beans} beans, #{jars} jars, and #{crates} crates."

start_point = start_point / 10

puts "We can also do that this way:" 
puts "We'd have %s beans, %s jars, and %s crates." % secret_formala(start_point)
puts
def关键字决定这是否是ruby中的方法。它以
end
关键字结尾


parens中的内容,在本例中是PH,这就是调用该方法时传递给该方法的内容。例如,如果将其称为
secret\u公式(10)
,则下一行将在代码内部读取
jelly_beans=10*500
。您不必总是在方法定义中包含参数。这是因为您可能不会始终将另一个值传递到此方法。您可能有一个只在内部执行某些操作而不提供任何附加信息的方法PH本身在这里并不重要,它只是用于传递它的值的名称。如果需要,可以将它命名为“hello”。

注意,在Ruby中,以大写字母开头的变量被视为常量。(
PH
)有点难理解你到底在问什么。你是在问,基本上,方法是如何工作的?我实际上选择了“PH”,因为我看到我在“()”中放了什么并不重要,所以“PH”对我来说实际上是“占位符”。假设在“()“这就是另一段代码的占位符吗?它不是真正的占位符。如果你真的打算传递一个可能会改变的值,你只想把它放在参数中。例如,如果你总是乘以10*500,你就不需要PH值,你可以把它保留为数字10。如果你知道你的PH值会随着你调用方法的时间而变化,你可以把它保留在那里,并在调用方法时传入一个值。
def secret_formala(PH)