1.5.1 缺损状态

Keywords:

Next: ,Previous: Argument evaluation,Up: Argument evaluation

1.5.1 缺损状态

(非内部的)R函数的事实参数可以比函数需要匹配的形式参数少。没有匹配上的形式参数在这些参数永远不会被使用(通过懒散赋值的方式)的情况下是无关紧要的,但是一旦参数被赋值,要么它的默认值被采用(在函数的赋值环境中),要么抛出一个含有信息的错误,如

     argument "foobar" is missing, with no default

内部的缺损状态通过两种机制处理。对象R_MissingArg 用于表明一个形式参数没有(默认)值。当事实参数和形式参数匹配的时候,通过形式参数创建一个新的参数列表。这些形式参数的值是含有第一个MISSING二进制位集合的R_MissingArg。然后,当一个形式参数匹配上一个事实参数,新的参数列表中对应的数目会被设置为匹配上的事实参数,并且如果不是R_MissingArg,缺损二进制位不用设置。

这个新的参数列表用于形成函数的赋值框架。如果命名参数随后给予新的值(在赋值前),缺损二进制位会被清除。

参数的缺损可以通过函数 missing() 确认。一个参数只有在设置了缺损二进制位或它的值是R_MissingArg时,才是明确的缺损。但是,缺损状态可以在函数间传递,因为在函数调用的时候把形式参数当着事实参数使用不会当作赋值。因此missing() 必须检验一个还没有赋值的形式参数(一个允诺),以确认它是否可以缺损。这一步可能需要调查一个允诺等。

Hits:Loading...

special topic