Scope modifiers: Difference between revisions

no edit summary
(Nimrod -> Nim)
No edit summary
Line 347:
=={{header|E}}==
E has no scope modifiers; all variables (including function definitions) are lexical. When more than one file is involved, all import/export of definitions is handled by explicit return values, parameters, or reified environments.
 
=={{header|Eiffel}}==
Routines (i.e. functions and procedures) always have global scope.
 
Variables have global scope except for:
* routine parameters
* variables declared local to a routine
* the 'Result' of a function
 
A local variable cannot hide (have the same name as):
* any routine
* a global variable
 
<lang Eiffel>feature
some_procedure(int: INTEGER; char: CHARACTER)
local
r: REAL
i: INTEGER
do
-- r, i and s have scope here
-- as well as int and char
-- some_procedure and some_function additionally have scope here
end
 
s: STRING
 
some_function(int: INTEGER): INTEGER
do
-- s and Result have scope here
-- as well as int (int here differs from the int of some_procedure)
-- some_procedure and some_function additionally have scope here
end
 
-- s, some_procedure and some_function have scope here</lang>
 
=={{header|Ela}}==
41

edits