1. Record example
- Posted by Daniel Berstein <daber at PAIR.COM> Feb 03, 1999
- 478 views
Here is a small example of bookstore application that makes use of "my" idea of records in Euphoria. This kind of syntax won't break existing code. Record members are accesed by subscripts, the interpreter would automatically translate member names to their appropiate subscript index. The "of" keyword is used to limit the data types supported by a sequence (currently it's data type "object"). Comments and suggestions are welcome. I would really like to hear Rob's opinion on the viability of such an enhancement. record Author sequence FistName sequence MiddleName sequence lastName end record =20 record Book sequence ISBN sequence Title sequence of Author integer Pages integer Year sequence Publisher sequence Summary atom Price end record sequence Books of Book =20 function AddBook(record NewBook) for i =3D 1 to length(Books) if equal(Books[i][ISBN], NewBook[ISBN]) then return -1 end if end for append(Books, NewBook) end function =20 function DeleteBook(sequence ISBN) integer pos pos =3D 0 for i =3D 1 to length(Books) do if equal(Books[i][ISBN], ISBN) then pos =3D i end if end for if pos then if pos =3D 1 and length(Books) =3D 1 then Books =3D {} elsif pos =3D length(Books) then Books =3D [1..length(Books)-1] else Books =3D Books[1..pos-1] & Books[pos+1..length(Books)] end if return 1 else return 0 end if end function =20 function GetBook(sequence ISBN) for i =3D 1 to length(Books) do if equal(Books[i][ISBN]), ISBN) then return Books[i] end if end for end function =20 -- -- -- -- -- -- -- -- -- -- -- -- -- Author new_author =20 new_author[FirstName] =3D "Charles" new_author[MiddleName] =3D "" new-author[LastName] =3D "Petzold =20 Book new_book =20 new_book[ISBN] =3D "84-481-0723-3" new_book[Title] =3D "Programaci=A2n en Windows 95" -- It's in spanish new_book[Auhtor] =3D {new_author} new_book[Pages] =3D 1094 new_book[Year] =3D 1996 new_book[Publisher] =3D "McGraw Hill / Microsoft Press" new_book[Summary] =3D "Best introductory WinAPI \n book available" new_book[Price] =3D 49.95 Special attention requires Jacques Guy "ilumininated" suggestion about routine id's. OO Euphoria now seems more than feasible! It's implementation needs foward declarations, read-only fields, and a "this" kind of reference. A a new syntax should be created: call_proc(rec[Draw]) isn't very nice ;) Regards, Daniel Berstein daber at pair.com