1
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 行和第 2 行“def secret_formula(PH)”和“jelly_beans = PH * 500”

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

4

1 回答 1

2
def secret_formala(PH)

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

括号中的内容,在本例中为 PH,这就是您在调用该方法时传递给该方法的内容。例如,如果您将其称为secret_formula(10),则下一行将jelly_beans = 10 * 500在代码内部读取。您并不总是需要在方法定义中有括号。这是因为您可能不会总是将另一个值传递给此方法。你可能有一个方法,它只是在内部做一些事情,而不给它任何额外的信息。PH 本身在这里并不重要,它只是您用于传递它的值的名称。如果您愿意,可以将其命名为“你好”。

于 2013-09-05T19:28:46.303 回答