switch.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:4k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1993 The Regents of the University of California.
  3. '" Copyright (c) 1994-1997 Sun Microsystems, Inc.
  4. '"
  5. '" See the file "license.terms" for information on usage and redistribution
  6. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  7. '" 
  8. '" RCS: @(#) $Id: switch.n,v 1.5.18.1 2004/10/27 14:23:58 dkf Exp $
  9. '" 
  10. .so man.macros
  11. .TH switch n 7.0 Tcl "Tcl Built-In Commands"
  12. .BS
  13. '" Note:  do not modify the .SH NAME line immediately below!
  14. .SH NAME
  15. switch - Evaluate one of several scripts, depending on a given value
  16. .SH SYNOPSIS
  17. fBswitch fR?fIoptionsfR?fI string pattern body fR?fIpattern body fR...?
  18. .sp
  19. fBswitch fR?fIoptionsfR?fI string fR{fIpattern body fR?fIpattern body fR...?}
  20. .BE
  21. .SH DESCRIPTION
  22. .PP
  23. The fBswitchfR command matches its fIstringfR argument against each of
  24. the fIpatternfR arguments in order.
  25. As soon as it finds a fIpatternfR that matches fIstringfR it
  26. evaluates the following fIbodyfR argument by passing it recursively
  27. to the Tcl interpreter and returns the result of that evaluation.
  28. If the last fIpatternfR argument is fBdefaultfR then it matches
  29. anything.
  30. If no fIpatternfR argument
  31. matches fIstringfR and no default is given, then the fBswitchfR
  32. command returns an empty string.
  33. .PP
  34. If the initial arguments to fBswitchfR start with fB-fR then
  35. they are treated as options.  The following options are
  36. currently supported:
  37. .TP 10
  38. fB-exactfR
  39. Use exact matching when comparing fIstringfR to a pattern.  This
  40. is the default.
  41. .TP 10
  42. fB-globfR
  43. When matching fIstringfR to the patterns, use glob-style matching
  44. (i.e. the same as implemented by the fBstring matchfR command).
  45. .TP 10
  46. fB-regexpfR
  47. When matching fIstringfR to the patterns, use regular
  48. expression matching
  49. (as described in the fBre_syntaxfR reference page).
  50. .TP 10
  51. fB-|-fR
  52. Marks the end of options.  The argument following this one will
  53. be treated as fIstringfR even if it starts with a fB-fR.
  54. .PP
  55. Two syntaxes are provided for the fIpatternfR and fIbodyfR arguments.
  56. The first uses a separate argument for each of the patterns and commands;
  57. this form is convenient if substitutions are desired on some of the
  58. patterns or commands.
  59. The second form places all of the patterns and commands together into
  60. a single argument; the argument must have proper list structure, with
  61. the elements of the list being the patterns and commands.
  62. The second form makes it easy to construct multi-line switch commands,
  63. since the braces around the whole list make it unnecessary to include a
  64. backslash at the end of each line.
  65. Since the fIpatternfR arguments are in braces in the second form,
  66. no command or variable substitutions are performed on them;  this makes
  67. the behavior of the second form different than the first form in some
  68. cases.
  69. .PP
  70. If a fIbodyfR is specified as ``fB-fR'' it means that the fIbodyfR
  71. for the next pattern should also be used as the body for this
  72. pattern (if the next pattern also has a body of ``fB-fR''
  73. then the body after that is used, and so on).
  74. This feature makes it possible to share a single fIbodyfR among
  75. several patterns.
  76. .PP
  77. Beware of how you place comments in fBswitchfR commands.  Comments
  78. should only be placed fBinsidefR the execution body of one of the
  79. patterns, and not intermingled with the patterns.
  80. .SH "EXAMPLES"
  81. The fBswitchfR command can match against variables and not just
  82. literals, as shown here (the result is fI2fR):
  83. .CS
  84. set foo "abc"
  85. fBswitchfR abc a - b {expr 1} $foo {expr 2} default {expr 3}
  86. .CE
  87. .PP
  88. Using glob matching and the fall-through body is an alternative to
  89. writing regular expressions with alternations, as can be seen here
  90. (this returns fI1fR):
  91. .CS
  92. fBswitchfR -glob aaab {
  93.    a*b     -
  94.    b       {expr 1}
  95.    a*      {expr 2}
  96.    default {expr 3}
  97. }
  98. .CE
  99. .PP
  100. Whenever nothing matches, the fBdefaultfR clause (which must be
  101. last) is taken.  This example has a result of fI3fR:
  102. .CS
  103. fBswitchfR xyz {
  104.    a  -
  105.    b {
  106.       # Correct Comment Placement
  107.       expr 1
  108.    }
  109.    c {
  110.       expr 2
  111.    }
  112.    default {
  113.       expr 3
  114.    }
  115. }
  116. .CE
  117. .SH "SEE ALSO"
  118. for(n), if(n), regexp(n)
  119. .SH KEYWORDS
  120. switch, match, regular expression