return.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:5k
- '"
- '" Copyright (c) 1993 The Regents of the University of California.
- '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
- '"
- '" See the file "license.terms" for information on usage and redistribution
- '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- '"
- '" RCS: @(#) $Id: return.n,v 1.3.18.1 2004/10/27 14:23:58 dkf Exp $
- '"
- .so man.macros
- .TH return n 7.0 Tcl "Tcl Built-In Commands"
- .BS
- '" Note: do not modify the .SH NAME line immediately below!
- .SH NAME
- return - Return from a procedure
- .SH SYNOPSIS
- fBreturn fR?fB-code fIcodefR? ?fB-errorinfo fIinfofR? ?fB-errorcodefI codefR? ?fIstringfR?
- .BE
- .SH DESCRIPTION
- .PP
- Return immediately from the current procedure
- (or top-level command or fBsourcefR command),
- with fIstringfR as the return value. If fIstringfR is not specified then
- an empty string will be returned as result.
- .SH "EXCEPTIONAL RETURN CODES"
- .PP
- In addition to the result of a procedure, the return
- code of a procedure may also be set by fBreturnfR
- through use of the fB-codefR option.
- In the usual case where the fB-codefR option isn't
- specified the procedure will return normally.
- However, the fB-codefR option may be used to generate an
- exceptional return from the procedure.
- fICodefR may have any of the following values:
- .TP 13
- fBok (or 0)fR
- Normal return: same as if the option is omitted. The return code
- of the procedure is 0 (fBTCL_OKfR).
- .TP 13
- fBerror (1)fR
- Error return: the return code of the procedure is 1 (fBTCL_ERRORfR).
- The procedure command behaves in its calling context as if it
- were the command fBerror fIresultfR. See below for additional
- options.
- .TP 13
- fBreturn (2)fR
- The return code of the procedure is 2 (fBTCL_RETURNfR). The
- procedure command behaves in its calling context as if it
- were the command fBreturnfR (with no arguments).
- .TP 13
- fBbreak (3)fR
- The return code of the procedure is 3 (fBTCL_BREAKfR). The
- procedure command behaves in its calling context as if it
- were the command fBbreakfR.
- .TP 13
- fBcontinue (4)fR
- The return code of the procedure is 4 (fBTCL_CONTINUEfR). The
- procedure command behaves in its calling context as if it
- were the command fBcontinuefR.
- .TP 13
- fIvaluefR
- fIValuefR must be an integer; it will be returned as the
- return code for the current procedure.
- .LP
- The fB-codefR option is rarely used.
- It is provided so that procedures that implement
- new control structures can reflect exceptional conditions back to
- their callers.
- .PP
- Two additional options, fB-errorinfofR and fB-errorcodefR,
- may be used to provide additional information during error
- returns.
- These options are ignored unless fIcodefR is fBerrorfR.
- .PP
- The fB-errorinfofR option specifies an initial stack
- trace for the fBerrorInfofR variable; if it is not specified then
- the stack trace left in fBerrorInfofR will include the call to
- the procedure and higher levels on the stack but it will not include
- any information about the context of the error within the procedure.
- Typically the fIinfofR value is supplied from the value left
- in fBerrorInfofR after a fBcatchfR command trapped an error within
- the procedure.
- .PP
- If the fB-errorcodefR option is specified then fIcodefR provides
- a value for the fBerrorCodefR variable.
- If the option is not specified then fBerrorCodefR will
- default to fBNONEfR.
- .SH EXAMPLES
- First, a simple example of using fBreturnfR to return from a
- procedure, interrupting the procedure body.
- .CS
- proc printOneLine {} {
- puts "line 1" ;# This line will be printed.
- fBreturnfR
- puts "line 2" ;# This line will not be printed.
- }
- .CE
- .PP
- Next, an example of using fBreturnfR to set the value
- returned by the procedure.
- .CS
- proc returnX {} {fBreturnfR X}
- puts [returnX] ;# prints "X"
- .CE
- .PP
- Next, a more complete example, using fBreturn -code errorfR
- to report invalid arguments.
- .CS
- proc factorial {n} {
- if {![string is integer $n] || ($n < 0)} {
- fBreturnfR -code error \
- "expected non-negative integer,\
- but got \"$n\""
- }
- if {$n < 2} {
- fBreturnfR 1
- }
- set m [expr {$n - 1}]
- set code [catch {factorial $m} factor]
- if {$code != 0} {
- fBreturnfR -code $code $factor
- }
- set product [expr {$n * $factor}]
- if {$product < 0} {
- fBreturnfR -code error \
- "overflow computing factorial of $n"
- }
- fBreturnfR $product
- }
- .CE
- .PP
- Next, a procedure replacement for fBbreakfR.
- .CS
- proc myBreak {} {
- fBreturnfR -code break
- }
- .CE
- .SH "SEE ALSO"
- break(n), catch(n), continue(n), error(n), proc(n), source(n), tclvars(n)
- .SH KEYWORDS
- break, catch, continue, error, procedure, return