Написание процедур в TCL - PullRequest
8 голосов
/ 14 марта 2011

Я очень новичок в TCL.Просто я хочу знать, как писать процедуры TCL без аргументов, как вызывать и как их выполнять.

Ответы [ 11 ]

21 голосов
/ 14 марта 2011

Чтобы написать процедуру, которая не принимает никаких аргументов, сделайте это:

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
6 голосов
/ 14 марта 2011

Вы можете определить процедуру следующим образом:

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]
4 голосов
/ 14 марта 2011
proc myProc {} {
    # do something
}

# call proc
myProc
3 голосов
/ 26 сентября 2017

На официальном веб-сайте 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"
2 голосов
/ 17 августа 2017

Это довольно просто.

Определение:

proc myproc {} {

}

вызов:

myproc 

Поскольку выНовинка, советую пройти через урок.У них простой и консолидированный контент.

2 голосов
/ 18 февраля 2015

Синтаксис процедуры

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" }
    

Как запустить:

шаг 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) для запуска процедуры

1 голос
/ 04 октября 2016

Чтобы создать процедуру TCL без каких-либо параметров, вы должны использовать ключевое слово proc, затем имя процедуры и область действия вашей процедуры.

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

Вы можете использовать созданную процедуру, просто вызвав ее имя: hello_world

1 голос
/ 31 марта 2016

В дополнение к ответам выше, я бы порекомендовал использовать tcltutor.exe (доступно из http://tcltutor.software.informer.com/3.0b/) для изучения TCL.

В нем будет глава о подпрограммах, которая поможет вам определить процесс TCL без аргументов и с аргументами.

С уважением Шарада

1 голос
/ 18 декабря 2015

Любое количество аргументов

Что может пригодиться, это использовать 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    
1 голос
/ 19 августа 2012

Процедура - это набор операторов, которые предварительно задаются в программе.

Синтаксис

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) для набора операторов, которые можно вызывать в основной программе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...