Back: 1.2.5.1 extern statements Forward: 1.3 The Interpreted Environment     FastBack: 1. Basic Ideas Up: 1.2.5 Variable scope FastForward: 2. Using Array Syntax         Top: Yorick: An Interpreted Language Contents: Table of Contents     About: About This Document

1.2.5.2 local statements

The save and restore functions store and retrieve Yorick variables in self-descriptive binary files (called PDB files). To create a binary file ‘demo.pdb’, save the variables theta, E, m, and c in it, then close the file:

 
f = createb("demo.pdb")
save, f, theta, E, m, c
close, f

To open this file and read back the theta variable:

 
restore, openb("demo.pdb"), theta, c

For symmetry with save, the restore function has the unusual property that it redefines its parameters (except the first). Thus, theta is redefined by this restore statement, just as it would have been by a theta= statement. The Yorick parser does not understand this, which means that you must be careful when you place such a function call inside a function:

 
func q_out_file(infile, Q, outfile)
{
  if (!is_stream(infile)) infile = openb(infile);
  local theta;
  restore, infile, theta;
  return q_out(Q, outfile);
}

This variant of q_out uses the theta variable read from infile, instead of an external value of theta. Without the local declaration, restore would clobber the external value of theta. This way, when q_out_file calls q_out, it has remembered the external value of theta, but q_out “sees” the value of theta restored from infile. When q_out_file finally returns, it replaces the original value of theta intact.

Any number of variables may appear in a single local statement:

 
local var1, var2, var3, var4;

Back: 1.2.5.1 extern statements Forward: 1.3 The Interpreted Environment     FastBack: 1. Basic Ideas Up: 1.2.5 Variable scope FastForward: 2. Using Array Syntax         Top: Yorick: An Interpreted Language Contents: Table of Contents     About: About This Document