新浪博客

Wolfram语言和Mathematica版本13的最新功能(12)

2022-06-24 11:00阅读:
Wolfram语言和Mathematica版本13的最新功能(12)
介绍创建程序包的工具
函数存储库是关于创建添加功能的单个函数。但是,如果您想创建一个具有许多相互关联的函数的全新功能世界怎么办?也许它不仅涉及函数,还涉及例如对用户界面元素的更改。多年来,我们使用我们称之为paclet的技术在内部构建了Wolfram语言系统的许多部分——它有效地提供了可以自动安装在任何给定用户系统上的功能包。
在12.1版本中我们开放了paclet系统,提供了PacletFind和PacletInstall等特定功能来使用paclet。但是创建paclet仍然是一门黑魔法。在13.0版中,我们现在发布了第一轮工具来创建paclet,并允许您将它们部署为文件或通过WolframCloud 分发。
以程序包形式分发的程序包工具,现在默认包含在每个Wolfram语言安装程序中.目前,这些工具位于一个单独的包中,您必须加载:
Wolfram语言和Mathematica版本13的最新功能(12)

要开始创建paclet,您需要定义一个“paclet文件夹”,其中包含构成您的paclet的所有文件:
Wolfram语言和Mathematica版本13的最新功能(12)
这将设置您的paclet的基本大纲结构,然后您可以添加文件:
Wolfram语言和Mathematica版本13的最新功能(12)
作为替代方案,您可以在第一次创建paclet时在您的paclet中指定一些组件:
Wolfram语言和Mathematica版本13的最新功能(12)
paclet中可以存在各种各样的元素,在未来的版本中,将会有更多的工具使创建它们变得更加容易。然而,在13.0版中,交付的一个主要工具是文档工具 ,它提供了用于创建与内置系统功能相同类型的文档的工具。
您可以直接从主系统调色板(Palettes)菜单访问这些工具:
Wolfram语言和Mathematica版本13的最新功能(12)
现在,您可以在您的程序包函数参考页面、指南页面、技术说明和其他文档元素中创建笔记本。一旦你有了这些,你就可以使用PacletDocumentationBuild将它们构建到完成的文档中。然后,您可以将它们作为笔记本文件、独立的HTML文件或部署在云中的材料。
即将推出用于创建程序包的其他工具,以及用于用户贡献数据包的公共程序包存储库。支持Paclet存储库的一个重要特性——已经可以与私有部署的paclet一起使用——是新函数PacletSymbol。
对于函数存储库,您可以使用ResourceFunction['name']访问存储库中的任何函数。PacletSymbol是程序包的类似物。使用程序包的一种方法是显式加载其所有资产。但是PacletSymbol允许您“深度调用”到一个paclet以访问单个函数或符号。就像ResourceFunction一样,在幕后仍然会发生各种资产加载,但是在您的代码中,您可以只使用PacletSymbol而无需任何可见的初始化。顺便说一下,一种新兴的模式是用一个程序包“支持”一组相互依赖的函数存储库函数,使用PacletSymbol从函数存储库中的代码访问各个函数。
上下文别名介绍
当您为某事使用名称(例如x)时,总是会出现“哪个x?”的问题。从版本1.0开始,每个符号都有上下文的概念。默认情况下,您在Global上下文中创建符号,因此您创建的x的全名是Global`x。
创建程序包时,您通常希望对其进行设置,以便它们引入的名称不会干扰您正在使用的其他名称。为了实现这一点,通常让程序包定义自己的上下文。然后,您始终可以通过其全名引用程序包中的符号,例如Package`Subpackage`x等。
但是,当您只要求x时,您会得到什么?这是由$Context和$ContextPath的设置定义的。
但有时你想要一个中间案例。如果Package`在上下文路径$ContextPath上,您希望能够在“在其程序包中”引用x,而不需要输入(或必须查看)潜在的长程序包的名称。
在13.0版中,我们引入了上下文别名的概念来让您这样做。基本思想非常简单。当您执行Needs['Context`']加载定义特定上下文的程序包时,您可以通过执行Needs['Context`'->'alias`'] 添加“上下文别名”。这样做的结果是,您可以将该上下文中的任何符号称为alias`name。如果您没有指定上下文别名,Needs会将您要求的上下文添加到$ContextPath,因此其符号是“只有x“形式。但是,如果您正在使用许多不同的上下文,这些上下文可能包含名称重叠的符号,那么为每个上下文使用上下文别名是一个更好的主意。如果您定义短别名,则不会有更多的输入,但您将确保始终引用正确的符号。
这会加载与上下文ComputerArithmetic`对应的包,默认情况下将该上下文添加到 $ContextPath:
Wolfram语言和Mathematica版本13的最新功能(12)
现在可以使用具有ComputerArithmetic的符号而无需说明其上下文:
Wolfram语言和Mathematica版本13的最新功能(12)
这将加载为其定义上下文别名的包:
Wolfram语言和Mathematica版本13的最新功能(12)
现在您可以使用别名来引用它的符号:
Wolfram语言和Mathematica版本13的最新功能(12)
全局符号$ContextAliases指定您当前使用的所有别名:
Wolfram语言和Mathematica版本13的最新功能(12)
顺便说一句,就像我们关于名称以大写字母开头的符号的约定一样,程序包的上下文名称也以大写字母开头是一种常见的通用约定。现在我们也有上下文别名,我们建议使用小写字母的约定。
公司名称:北京哲想软件有限公司
北京哲想软件官方网站:cogitosoft.com
北京哲想软件微信公众平台账号:cogitosoftware
北京哲想软件微博:哲想软件
北京哲想软件邮箱:sales@ cogitosoft.com
销售(俞先生)联系方式: 86(010)68421378
微信:18610247936 QQ:368531638

我的更多文章

下载客户端阅读体验更佳

APP专享