首页 > 其他分享 >无涯教程-Tcl - 包(Packages)

无涯教程-Tcl - 包(Packages)

时间:2023-11-22 20:31:48浏览次数:37  
标签:MyProcedure package 创建 无涯 HelloWorld Tcl 步骤 tcl Packages

包(Packages)用于创建可重用的代码单元,使用命名空间的概念来避免变量名和过程名的冲突。在无涯教程的下一章" 命名空间" 教程中进一步了解。

创建包(Packages)

可以使用最少两个文件创建一个包,一个文件包含代码,其他文件包含索引程序包文件。

下面给出了创建和使用包的步骤列表。

步骤1 : 创建代码

在名为HelloWorld的文件夹中为包创建代码。让文件命名为HelloWorld.tcl,其代码如下所示-

# /Users/rajkumar/Desktop/helloworld/HelloWorld.tcl 
# 创建命名空间
namespace eval ::HelloWorld {
 
  # 导出我的程序
  namespace export MyProcedure
 
  # 变量
   set version 1.0
   set MyDescription "HelloWorld"
 
  # 脚本路径的变量
   variable home [file join [pwd] [file dirname [info script]]]
 
}
 
# MyProcedure 过程的定义
proc ::HelloWorld::MyProcedure {} {
   puts $HelloWorld::MyDescription
}

package provide HelloWorld $HelloWorld::version
package require Tcl 8.0

步骤2 : 创建包索引

打开tclsh。切换到HelloWorld目录,并使用pkg_mkIndex命令创建索引文件,如下所示-

% cd /Users/rajkumar/Desktop/helloworld 
% pkg_mkIndex . *.tcl

步骤3 : 添加到自动路径

使用lappend命令将软件包添加到全局列表,如下所示-

% lappend auto_path "/Users/rajkumar/Desktop/helloworld"

步骤4 : 加载包

接下来使用package require语句将包添加到程序中,如下所示-

% package require HelloWorld 1.0

步骤5 : 调用程序

现在,一切都已设置完毕,如下所示:

% puts [HelloWorld::MyProcedure]

您将获得以下输出-

HelloWorld

前两个步骤创建了包。创建包后,可以通过添加最后三个语句在任何Tcl文件中使用它,如下所示-

lappend auto_path "/Users/rajkumar/Desktop/helloworld"
package require HelloWorld 1.0
puts [HelloWorld::MyProcedure]

您将获得以下输出-

HelloWorld

参考链接

https://www.learnfk.com/tcl-tk/tcl-packages.html

标签:MyProcedure,package,创建,无涯,HelloWorld,Tcl,步骤,tcl,Packages
From: https://blog.51cto.com/u_14033984/8519686

相关文章

  • 无涯教程-Tcl - 字典(Dictionary)
    字典(Dictionary)是一种键值对(Key/Value)存储结构。语法如下所示-dictsetdictnamekeyvalue#ordictcreatedictnamekey1value1key2value2..keynvaluen创建字典的一些示例如下所示-#!/usr/bin/tclshdictsetcolourscolour1redputs$coloursdictset......
  • 无涯教程-Tcl - 字符串(Strings)
    Tcl的原始数据类型是字符串,这些字符串可以包含字母数字字符,仅数字,布尔值甚至二进制数据,Tcl使用16位Unicode字符,字母数字字符可以包含字母,包括非拉丁字符,数字或标点符号。字符串表示与其他语言不同,在Tcl中,当它只是一个单词时,不需要双引号。一个例子可以是-#!/usr/bin/tclshse......
  • VS2022下nuget包同步失败,提示: PackageSourceMapping 已启用,未考虑以下源: **
    随着Net8的发布,顺带VS2022升级到17.8后,发现nuget还原恢复多了一些配置: 有问题的时候,会提示未找到映射源,此时编译会报错,如下示例: 严重性代码说明项目文件行禁止显示状态错误NU1100无法解析net7.0-android33.0的“HarfBuzzSharp.NativeAssets.Linux(>=2.8.2.3)”......
  • 无涯教程-Sed - 特殊字符
    SED提供了两个特殊字符,它们被视为命令。本章说明了这两个特殊字符的用法。=命令"="命令显示行号。以下是"="命令的语法:[/pattern/]=[address1[,address2]]==命令将行号及其内容写入标准输出流。以下示例说明了这一点。[jerry]$sed'='books.txt执行上述代码后,您将......
  • 无涯教程-Sed - 模式范围
    本章介绍了SED如何处理PatternRange(模式范围)PatternRange可以是简单的文本或复杂的正则表达式。下面的示例打印作者Paulo的所有书籍。[jerry]$sed-n'/Paulo/p'books.txt执行上述代码后,您将得到以下输出:3)TheAlchemist,PauloCoelho,1975)ThePilgrimage,Paul......
  • 无涯教程-Sed - 分支操作
    可以使用 t命令创建分支。仅当上一个命令成功时,t命令才会跳转到标签。让无涯教程以与上一章相同的示例为例,但是现在不打印单个连字符(-),而是打印四个连字符。以下示例说明了t命令的用法。[jerry]$sed-n'h;n;H;xs/\n/,/:Loop/Paulo/s/^/-//----/!tLoopp'bo......
  • 无涯教程-Sed - 循环语句
    与其他编程语言一样,SED也提供了循环和分支函数来控制执行流程。在本章中,无涯教程将探索更多有关如何在SED中使用循环和分支的信息。SED中的循环的工作方式类似于goto语句。SED可以跳到标签所标签的行,然后继续执行其余命令。在SED中,可以如下定义label :label:start:end......
  • 无涯教程-Sed - 简介
    sed(意为流编辑器,源自英语“streameditor”的缩写)是一个使用简单紧凑的编程语言来解析和转换文本Unix实用程序。sed由贝尔实验室的LeeE.McMahon于1973年至1974年开发,并且现在大多数操作系统都可以使用。sed基于交互式编辑器ed(“editor”,1971)和早期qed(“quickeditor”,1......
  • 无涯教程-Ruby Profiler −函数
    在大多数情况下,您可以通过消除瓶颈来提高慢速程序的性能。探查器是找到瓶颈的工具。为了向您的Ruby程序添加配置文件,您需要首先使用命令行options-rprofile加载Profile库。使用语法$ruby-rprofile[programfile][arguments]Example这是从hello.rb文件生成的输......
  • 无涯教程-Interactive Ruby (irb) −函数
    交互式Ruby或irb是Ruby附带的交互式编程环境。它是由石冢启十先生撰写的。使用语法要调用它,请在shell或命令提示符下键入irb,然后开始输入Ruby语句和表达式。使用退出或退出退出irb。$irb[.rb][options][programfile][arguments]这是options的完整列表-Sr.No.Comma......