Ruby:关于定义方法的困惑

时间:2013-09-05 19:06:35

标签: ruby methods function

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

所以,这是我的代码和我的混淆,这对其他人来说可能看起来非常明显,但由于我还是Ruby的新手,它让我感到惊讶。我不明白的是1号线和1号线。 2“def secret_formula(PH)”和“jelly_beans = PH * 500”

我可以用任何代替“PH”的东西来运行,但代码是如何理解我拥有“PH”的地方使用的是“start_point”数字?为什么我没有收到错误?在第1行的“def secret_formula(PH)”之后将“()”放入“()”有什么意义?

1 个答案:

答案 0 :(得分:2)

def secret_formala(PH)

def关键字决定了这是否是ruby中的方法。它以end关键字结尾。

parens中有什么内容,在这种情况下是PH,这是你在调用它时传入方法的内容。例如,如果您将其称为secret_formula(10),则下一行将在代码内部读取jelly_beans = 10 * 500。您并不总是需要在方法定义中包含parens。这是因为您可能不会总是将另一个值传递给此方法。您可能有一个方法只在内部执行某些操作,而不会给出任何其他信息。 PH本身在这里并不重要,它只是您用于传递它的值的名称。如果你愿意,你可以把它命名为“你好”。

相关问题