在本章,我们先回顾了数学中的函数,然后延伸到了程序中的函数。Julia 语言中的函数与数学中的函数很相近。我们可以用一种简洁形式在 Julia 程序中定义函数。这样的话,它们看起来就更像数学函数了。当然了,我们在一般情况下会使用标准的形式来定义函数。标准的函数定义会包含关键字和end,而且其函数体还可以占据多行。另外,我们不但可以为一个函数的任何参数声明类型,还可以把它的参数声明为位置参数或关键字参数,以及必选参数或可选参数。相比之下,函数的结果声明就简单多了。因为它只能有一个类型声明。虽然 Julia 函数的结果原则上只能有一个,但我们却可以让它同时返回多个结果值。这时,Julia 会自动地把多个结果值包装成一个元组。

    当我们对一个泛化函数进行调用时,Julia 会利用它的多重分派机制选择最匹配的那个衍生方法去承接调用。如果存在那样的衍生方法,那么函数调用就将是非常顺滑的。否则,Julia 就会立即报错,并告知我们找不到匹配的衍生方法。另外还要注意,包含了可选的位置参数的函数定义会被 Julia 同时解析为多个衍生方法。这可能会导致一些不符合我们预期的方法覆盖。

    通常,正规的程序都会有一系列函数负责把整个流程串起来。因为这样做可以让流程中的每一个步骤都清晰、易懂。毫不夸张地讲,会用函数、善用函数是我们成为合格的程序开发者的必要条件。我希望你能通过对本章内容的理解,向着优秀开发者的阵营大步挺进。