4.3.2 参数匹配

Keywords:

Next: ,Previous: Evaluation environment,Up: Evaluation

4.3.2 参数匹配

函数求值里面发生的第一件事就是将形式参数和实际的或提供的参数匹配。这由三步完成:

  1. 标签的精确匹配对于任何一个有名字的给定参数,形式参数列表会用来仔细搜索对应的名字精确匹配的参数。一个形式参数对多个实际参数是不允许的,反之也然。
  2. 标签的局部匹配。任一留下的有名字的给定参数将和余下的形式参数进行局部匹配。如果给定参数的名字和形式参数的前面部分精确吻合,那么这两个参数看作是相互匹配的。多重匹配是不允许的。注意,如果 f <- function(fumble,fooey) fbody,那么 f(f = 1, fo = 2) 是违法的,尽管第二个参数仅匹配fooey。而 f(f = 1, fooey =2) 合法的,因为第二个参数精确匹配会在考虑局部匹配前去掉了。如果形式参数包括 ...,那么局部匹配仅仅用于优先于它的参数。
  3. 位置匹配。任何没有匹配上的形式参数依次和没有命名的给定参数比对。如果有一个... 参数,它将吸收所有余下的参数,无论它加了标签还是没有标签。

如果还有没被匹配上的参数,那么一个错误将会被声明。

参数匹配可以用函数 match.argmatch.callmatch.fun 来实现扩展。可以通过pmatch访问R的局部匹配算法。

Hits:Loading...

special topic