Re: Structures
- Posted by MAP <ddhinc at ALA.NET>
Mar 05, 1998
A little more elaboration on what my idea of what structures
would be like in Euphoria...
Native structures:
These would be structures composed of Euphoria's native types.
structure my_struct_type
integer member1,
atom member2,
sequence member3,
object member4
end structure
function do_stuff (my_struct_type this_struct)
integer int1
sequence seq1
my_struct temp_struct
.
.
.
this_struct.member1 = int1 -- fine, as long as int1 is
-- initialized
int1 = this_struct.member1 -- fine too, same condition
this_struct.member1 = seq1 -- gives exception only with
-- type checking on
this_struct = temp_struct -- always ensures temp_struct
-- is of same type, with or
-- without type check (otherwise
-- the <.whatever> syntax could
-- get you into trouble)
-- member initializations are
-- never checked
return this_struct -- can be returned, just like
-- any other type
-- member initializations are
-- checked.
end function
-----------------------------
my_struct_type a_struct
sequence a_sequence
.
.
.
a_struct = do_stuff(a_struct) -- since do_stuff has it's
-- parameter typed as a
-- structure, the variable
-- passed will always be
-- type-checked.
-- had it specified a parameter
-- as sequence or object,
-- no checking would be
-- done with type check off
a_sequence = do_stuff(a_sequence) -- illegal, because of
-- parameter type
a_sequence = a_struct -- fine, sequences can be
-- assigned the value of an
-- entire structure, so can
-- objects, but never the
-- other way around!
a_sequence.member1 = 1 -- illegal! sequences do NOT
-- inheret the <.whatever>
-- syntax, nor do objects
As Mr. Phillips suggested, having structs be flexible can be
of advantage, but that come's implicitly thru Euphoria's
flexible types. member3 or member4 could contain virtually
anything. Also by virtue of this being treated as basically
another type, you could have sequences containing structures,
giving quite a bit of flexibility there as well.
C Structures:
The example I used in my previous post was just for a special
type of structure, one for C's types that would be immediately
passable to external functions. These would by necessity be
very rigid, and could only be used for assignment and passing
to external functions, not to be generally used within the
rest of your program. (Also, the example I used in the other
post was fairly ugly, it was just what I was suggesting it do
logically, not how it should appear stylistically).
Thanks,
Christopher D. Hickman
|
Not Categorized, Please Help
|
|