是什么让函数调用?

时间:2016-11-20 07:55:40

标签: ruby

我正在尝试学习File 1 = Example.C #include <stdio.h> #include <stdlib.h> #include <conio.h> int main(void) { printf ("C Programming, This is my First C Program"); return EXIT_SUCCESS; } File 2: TestProgram.C #include <stdio.h> #include <stdlib.h> #include <conio.h> int main(void) { printf ("This is a TEST C Program, Check it out. "); return 0; } 方法,这对我来说非常困惑。最后,当我以为我已经理解了这个方法时,突然出现了这段代码

yield

当我执行包含此代码的文件时,它不会打印任何内容。据了解,没有人调用这种方法所以没有输出。

但如果我添加

,则在同一个文件中
def test
   puts "You are in the method"
   yield
   puts "You are again back to the method"
   yield
end

在测试函数下方突然开始打印puts语句。

我不明白是谁在调用这个方法。如果test {puts "You are in the block"} 阻止导致呼叫,它不应该首先执行其内容吗?

但是输出是

test {..}

2 个答案:

答案 0 :(得分:5)

当你写test { puts "You are in the block"}时, 你正在调用该函数。你正在调用test,并传递一个参数,一个块。

每个方法都可以隐含地使用一个块参数。当你在函数内部调用yield时,你说的是#34;调用块参数。&#34;因此,当您两次调用yield时,您在其他puts语句之间调用了两次block参数。

答案 1 :(得分:2)

  

当我执行包含此代码的文件时,它不会打印任何内容。   据了解,没有人调用这种方法所以没有输出。

定义方法与调用它无关。您可以定义数百个方法,每个方法都输出一些内容,但运行该文件将导致无输出,因为实际上调用了任何方法。

  

但如果添加test {puts "You are in the block"},则在同一文件中   在测试函数下方突然开始打印puts语句。

正确,您 实际上正在调用 将块传递给它的方法。

  

调用函数的原因是什么?

键入一个方法的名称,将参数传递给它(如果它接受任何(块可以传递给任何方法,尽管它的arity))调用它。