A VBFC--or value by function call--is a method call that is typically embedded within an otherwise static message to provide content tailored to the perspective of a particular user. For example, suppose you wish to create a clock that, in its long description, displays the current time. You could override the getLongDescription method to dynamically generate the description, but then you have to be very careful to provide all of the functionality that is typically included in getLongDescription, which can get complex. Or, you can use setLongDescription like normal, but embed a VBFC that invokes a method returning the current time as a string. It might look something like:
self.setLongDescription("A large wooden clock that reads ",
stdlib.VBFC(self.getTimeDescription), ".")
Note that concatenation is not used. Rather, multiple arguments are passed, each being a string or VBFC. Because of this, methods must specially support VBFCs--they can't be passed to just anything. In general, methods intended to return messages destined for users usually support VBFCs, but you should consult the documentation for a particular method to verify.
The VBFC class lives in the mudlib.stdlib module. Its constructor accepts a method and any number of optional arguments which will be passed to that method (as individual arguments). The value returned from the method must be a string.
Since use of a VBFC results in a method call each time the message is evaluated, they are much more costly in terms of cpu usage than normal, purely static messages. As a result, you should not use VBFCs with reckless abandon.
See the mudlib.stdlib.VBFC class documentation for more details.