在TCL编写程序

时间:2011-03-14 10:57:34

标签: tcl

我对TCL很新。只是我想知道如何编写没有参数的TCL过程以及如何调用以及如何执行它。

11 个答案:

答案 0 :(得分:21)

要编写不带任何参数的过程,请执行以下操作:

proc someName {} {
    # The {} above means a list of zero formal arguments
    puts "Hello from inside someName"
}

要调用该过程,只需写下其名称:

someName

如果它返回一个值:

proc example2 {} {
    return "some arbitrary value"
}

然后,您可以通过将调用括在方括号中并使用您希望使用的值来执行返回值的操作:

set someVariable [example2]

执行它......取决于你的意思。我假设你的意思是从Tcl程序外部这样做。这是通过使整个脚本(例如,theScript.tcl)定义过程并进行调用来完成的,如下所示:

proc example3 {} {
    return "The quick brown fox"
}
puts [example3]

那将是这样的:

tclsh8.5 theScript.tcl

答案 1 :(得分:6)

您可以定义如下过程:

proc hello_world_proc {} {
  puts "Hello world"
}

你只需写下来就可以执行它:

hello_world_proc

如果要使用该过程的返回值,可以执行以下操作:

# Procedure declaration
proc hello_world_proc2 {} {
  return "Hello world"
}

# Procedure call
puts [hello_world_proc2]

答案 2 :(得分:4)

proc myProc {} {
    # do something
}

# call proc
myProc

答案 3 :(得分:3)

官方Tcl网站上有一些可以帮助您https://www.tcl.tk/man/tcl/TclCmd/proc.htm的功能(程序)文档。

无争议的程序

如果你不需要任何论证,那么如何编写你想要的程序:

proc funcNameNoArgs {} {
    puts "Hello from funcNameNoArgs"
}

您可以按如下方式调用它:

funcNameNoArgs

带参数的程序

现在让我们说你将来需要争论。以下是在TCL中编写该程序的方法:

proc funcNameWithArgs {arg1 arg2 arg3} {
    puts "Hello from funcNameWithArgs "
}

您可以通过执行以下操作来调用该函数:

funcName arg1 arg2 arg3

以下是一段代码供您试用!

请记住在调用函数之前定义函数,否则会出错。

尝试在解释器中复制粘贴此代码以开始使用它:

proc funcNameNoArgs {} {
    puts "Hello from a function with no arguments"
}
funcNameNoArgs
proc funcNameWithArgs {arg1 arg2 arg3} {
    puts "Hello from a function with 3 arguments"
    puts $arg1
    puts $arg2
    puts $arg3
}
funcNameWithArgs "Argument 1" "Argument 2" "Argument 3"

答案 4 :(得分:2)

程序语法

proc <Name Of procedure> {No of arguments, if u want don't need simply left empty} { 
<Body>
 }

让我们看看例子:

  1. 没有参数:

    proc Hello_eg { } { puts "Hello I M In procedure" }
    
  2. 如何运行:

    第1步:在提示符上写下tclsh

    步骤2:按照上面的描述编写程序

    步骤3:只编写程序名称(即Hello_eg)以运行程序

    2.带参数:

    proc Hello_Arg { first second }
    {
       puts "The first argument is: $first"
       puts "The Second argument is: $second"
    }
    

    如何运行:

    第1步:在提示符上写下tclsh

    步骤2:按照上面的描述编写程序

    步骤3:只用参数写入过程名称(即Hello_Arg Ramakant Singla)来运行程序

答案 5 :(得分:2)

非常简单。

定义:

proc myproc {} {

}

致电:

myproc 

既然你是新手,我建议你通过辅导点。它们具有简单和统一的内容。

答案 6 :(得分:1)

程序是一组在程序中被预先编写的语句。

语法

proc <Name> {INPUTS} {
BODY
}

例如:

proc add {m n} {
    set s 0
    set s [expr $m + $n]
    return $s
}

#Main Program Starts Here

set x 2
set y 3
set Result [add $x $y]
puts "$Result"

在上面的例子....在程序中,我们为可以在主程序中调用的语句集提供了一个名称(add)。

答案 7 :(得分:1)

任何数量的参数

使用args可能会派上用场 通过使用args,您可以将任意数量的参数传递给您的过程。

proc withAnyNumberOfArguments {args} {
    if {$args eq ""} {
        puts "got no arguments"
    } 
    foreach arg $args {
        puts "got $arg"
    }
}

可选参数

另一个提示:用{ }括起参数使它们成为可选参数。

proc atLeastOneArgument {a1 {args}} {
    puts -nonewline "got a1=$a1"
    foreach arg $args {
        puts -nonewline " and $arg"
    }
    puts "."
}

默认值

如果您想拥有默认值,可以按如下方式指定它们:

proc putsTime { {secondsSinceBeginOfEpoch "now"} } {
    if {$secondsSinceBeginOfEpoch eq "now"} {
        set secondsSinceBeginOfEpoch [clock seconds]
    }
    return [clock format $secondsSinceBeginOfEpoch]
}

一些示例调用

1 % withAnyNumberOfArguments
got no arguments

2 % withAnyNumberOfArguments one
got one

3 % withAnyNumberOfArguments ready steady go!
got ready
got steady
got go!


4 % atLeastOneArgument "this is one argument" ;# because its in double quotes
got a1=this is one argument.

5 % atLeastOneArgument 3 2 1 go!
got a1=3 and 2 and 1 and go!.


6 % puts [formatTime]
Fri Dec 18 16:39:43 CET 2015

7 % puts [formatTime 0]
Thu Jan 01 01:00:00 CET 1970    

答案 8 :(得分:1)

除了上面的答案,我建议使用tcltutor.exe(可从http://tcltutor.software.informer.com/3.0b/获得)来学习TCL。

它将有一章子程序,它将帮助你定义没有参数和带参数的TCL过程。

此致 沙拉德帕

答案 9 :(得分:1)

要创建不带任何参数的TCL过程,您应该使用proc关键字,后跟过程名称,然后是过程的范围。

proc hello_world {} {
   // Use puts to print your output in the terminal.
   // If your procedure return data use return keyword.
}

您只需调用其名称即可使用创建的过程:    程序hello_world

答案 10 :(得分:0)

此解决方案基于之前有关编写过程的问题。我个人认为这是在tcl中编写过程的更好方法之一。

<强>代码

proc sampleProc args {

   # Defaults
   array set options {-device router0 -ip "10.16.1.62"}

   # Read args
   array set options $args

   # Assign
   set device $options(-device)
   set ip $options(-ip)

   # Usage
   puts "Device under use is $device and IP is  $ip"

   # Return 
   return "${sd} :: $ip"
}

<强>执行

tclsh> source sampleProc.tcl
Device under use is router0 and IP is 10.16.1.62
router0 :: 10.16.1.62