2012-07-11 2 views
1

Je lis un ensemble de données ligne par ligne à partir d'un fichier dans une procédure. Maintenant, comment puis-je retourner ces lignes de données de cette procédure. Et comment puis-je affecter ces données issues de cette procédure à un ensemble de données?Comment passer un jeu de données hors d'un proc dans TCL

proc readdata{} { 
    set fptr [open Test1.txt r] 
    set fptr_data [read $fptr] 
    set data [split $fptr_data "\n"] 
} 

Comment puis-je retourner ces données à partir de cette procédure?

+1

Qu'est-ce qu'un "jeu de données" dans votre cas, précisément? – kostix

+1

Vous voulez probablement 'fermer $ fptr' entre' read' et 'split'. –

Répondre

3

Vous pouvez utiliser l'instruction return:

proc readdata {filename} { 
    set fptr [open $filename r] 
    set fptr_data [read $fptr] 
    set data [split $fptr_data "\n"] 
    return $data 
} 
... 
set dataset [readdata Test1.txt] 

Toutefois, par défaut les procédures Tcl renvoient le résultat de la dernière commande qui a été exécutée. Personnellement, je préfère une déclaration explicite return.

3

Techniquement, vous devez faire rien d'autre:

Lorsqu'une procédure est invoquée, la valeur de retour de la procédure est la valeur spécifiée dans une commande return. Si la procédure n'exécute pas explicitement return, sa valeur de retour est la valeur de la dernière commande exécutée dans le corps de la procédure.

- http://www.tcl.tk/man/tcl8.5/TclCmd/proc.htm

Questions connexes