Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.alt.folklore.computer > #44632
| From | ram@zedat.fu-berlin.de (Stefan Ram) |
|---|---|
| Newsgroups | de.alt.folklore.computer |
| Subject | Re: 60 Jahre BASIC |
| Date | 2024-05-09 14:37 +0000 |
| Organization | Stefan Ram |
| Message-ID | <READ-20240509152606@ram.dialup.fu-berlin.de> (permalink) |
| References | (1 earlier) <v1ftkc$pc2$1@solani.org> <BASIC-20240508142441@ram.dialup.fu-berlin.de> <BASIC-20240508150340@ram.dialup.fu-berlin.de> <v1i460$iorb$1@dont-email.me> <v1ikjn$2cf0$1@solani.org> |
Sebastian Barthel <naitsabes@freenet.de> schrieb oder zitierte:
>Das mit den DATA Zeilen geht prinzipiell aber auch woanders so ähnlich.
>In C lassen sich Variablen, auch Arrays, direkt vorbelegen. Das ist so
>von der Benutzung her ziemlich nahe an den BASIC DATA-READ Statements,
>wie so meistens benutzt worden sind. Was damit nur bedingt geht, ist das
>umbelegen mit RESTORE.
Allerdings kann man in BASIC verschiedene Datentypen in einer
"DATA"-Anweisung mischen. Selbst in Python kann man nicht alle
Eigenschaften von DATA, READ und RESTORE genau nachbilden, aber
hier ein Versuch, wenigstens einige Eigenschaften nachzubilden:
main.py
class OUT_OF_DATA( StopIteration ):
pass
def INIT():
global _data_list
global _data_pos
try:
_data_list
except NameError:
_data_list = []
try:
_data_pos
except NameError:
_data_pos = iter( _data_list )
def RESTORE():
global _data_pos
INIT()
_data_pos = iter( _data_list )
def DATA( *args ):
global _data_list
INIT()
_data_list += args
RESTORE()
def READ():
INIT()
try:
return next( _data_pos )
except StopIteration:
pass
raise OUT_OF_DATA
DATA( 10, "OK" )
DATA( 2.5 )
print( READ() )
print( READ() )
RESTORE()
print( READ() )
print( READ() )
print( READ() )
print( READ() )
Ausgabe (Fehlermeldung gekürzt)
10
OK
10
OK
2.5
OUT_OF_DATA
Back to de.alt.folklore.computer | Previous | Next | Find similar | Unroll thread
csiph-web