如何在与程序相同的文件中声明和使用 Perl 6 模块?

2023-12-31

有时我不需要多个文件,特别是当我想保留一个可以在以后变成其他东西的良好结构的想法时。我想做这样的事情:

module Foo {
    sub foo ( Int:D $number ) is export {
        say "In Foo";
        }
    }

foo( 137 );

运行这个,我得到一个编译错误(我认为这对于动态语言来说有点奇怪):

===SORRY!=== Error while compiling /Users/brian/Desktop/multi.pl
Undeclared routine:
    foo used at line 9

Reading Perl 6“模块”文档 http://doc.perl6.org/language/modules#Exporting_and_Selective_Importing,我没有看到任何方法可以做到这一点,因为各种动词想要查看特定的文件。


子例程声明是词法的,所以&foo在模块主体之外是不可见的。您需要在主线代码中添加一条 import 语句以使其可见:

module Foo {
    sub foo ( Int:D $number ) is export { ... }
}

import Foo;
foo( 137 );

仅作为记录,您还可以手动声明&foo主线中的变量并从模块内分配给该变量:

my &foo;

module Foo {
    sub foo ( Int:D $number ) { ... } # no export necessary

    &OUTER::foo = &foo;
}

foo( 137 );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在与程序相同的文件中声明和使用 Perl 6 模块? 的相关文章

  • Python 的“导入”内部是如何工作的?

    当您导入一个模块 然后再次重新导入它时 它会被重新导入 覆盖还是跳过 当您导入模块 a 和 b 并且还在模块 a 中导入模块 b 时 会发生什么 这样做安全吗 例如 如果该模块 b 中有一个实例化的类 您最终会实例化它两次吗 import加
  • 为什么导入的函数“作为”另一个名称保留其原始 __name__ ?

    Here from os path import exists as foo print foo name we get exists 为什么不 foo 哪个属性会给出 foo 您可以查看import foo as bar只是一个任务 你不
  • 在Windows中启动python时导入模块[重复]

    这个问题在这里已经有答案了 我在 Windows 上使用 python 我正在尝试找到一种在启动 python 时导入一些默认模块的方法 这意味着 当启动python时 一些模块应该已经导入 就像builtins 有什么办法吗 Thanks
  • JavaScript 中是否可以从子类导入父模块?

    我有两个带有自己模块的文件 Sub js and 父 js 父 js import Sub from Sub js export default class Parent static createSomething new Sub Sub
  • 如何排除不想要的后代?

    我遇到的情况是元素包含n可点击的手柄和n可揭示的元素 div class revealer div class hotspot a class handle href A a div class reveal p Content A p d
  • Ruby:C 类包含模块 M;在 M 中包含模块 N 不会影响 C。什么给出?

    更详细地说 我有一个模块Narf 它为一系列类提供了基本功能 具体来说 我想影响所有继承的类Enumerable So I include Narf in Enumerable Array是一个类 其中包括Enumerable默认情况下 然
  • 为什么模块中的公共函数不可访问

    我有一个由几个有用的小实用程序组成的程序集 其中我有一个包含简单公共功能的模块 Module FishTrackerConfigurations Public Function GetValueOfUseProductId As Boole
  • 对内核模块代码进行单元测试是否可行?

    如果是这样我应该使用什么技术 我正在考虑使用 hippomock 因为它们可以用来模拟 C 方法 还有更好的方法吗 如果是这样 任何人都可以提供建议 或者您认为内核的单元测试是否太过分了 从 Linux 内核版本 5 5 开始KUnit可用
  • 具有来自包含器类的静态方法调用的 Ruby 模块

    我需要在模块中定义使用包含该模块的类中的方法的常量 module B def self included base class lt lt base CONST self find end end end class A def self
  • Node.js:如何从模块内获取需要函数的文件名?

    我试图从需要模块功能的地方获取原始文件名 我知道你可以使用 filename获取当前文件 但我想获取原始文件 例如 我有一个简单的模块 模块 js module exports function return print function
  • 从子模块隐式导入

    我有一个这样的包 foo init py bar py baz py 我希望在导入时自动使用子模块的功能foo So if bar py has def spam 在某个地方 我希望能够直接调用它 就像foo spam 实现这一目标的最佳方
  • Python 上的 io.open() 和 os.open() 有什么区别?

    我意识到open 我一直在使用的函数是一个别名io open 以及导入 from os会掩盖这一点 通过以下方式打开文件有什么区别io模块和os module io open 是文件 I O 的首选高级接口 它将操作系统级文件描述符包装在一
  • excel vba 将 system.collections.hashmap 导入模块

    从我的内心微软 Excel 2010安装我已经打开了Visual Basic 编辑器 选项卡开发工具 gt Visual Basic 在 的里面Visual Basic 编辑器我右键单击进入项目窗口并创建了一个module 插入 gt 模块
  • Perl 6:反式(%h) 与反式(%h.keys => %h.values)

    还有一个问题是关于hash作为论据trans 在下面的代码中简单地取hash给出了错误的结果 但将其替换为keys and values使其正确 怎么了 my alph1
  • Node js:如何获取文件签名标头而不是 mime 类型?

    我下载了this https www npmjs com package mime types我的 Node js 项目的模块 它似乎在某种程度上工作正常 如果你console log mime lookup pathToFile 它返回文
  • 当每个人都对 OSGi 进行标准化时,为什么 Sun 还要发明另一个模块系统?

    Sun 在 JDK 模块化方面投入了大量精力 其形式为Jigsaw http openjdk java net projects jigsaw 并暗示它也应该成为其他 Java 开发人员选择的模块格式 使用此功能的唯一著名参与者是 NetB
  • Rust 中为什么有 mod 关键字?

    看完之后this https doc rust lang org book crates and modules html 我想知道为什么有一个mod关键字和mod rs 我假设目录层次结构也可以描述模块 必须显式声明模块有几个原因 模块可
  • Zend Framework 中的动态默认模块

    有谁知道在 Zend Framework 中动态设置默认模块并且不会遇到命名空间问题的方法 例如 我想要做的是有一个允许加载的模块表 其中一个设置为默认模块 例如 我可能有 admin blog calendar 作为可以加载的模块 如果我
  • VBA 架构技巧 - 宏封装

    我拼凑了 Excel 的概念证明 以从数据库获取数据 并需要将其打包 以便可以将其分发给我们的客户 我的第一次尝试只是将所有代码放入代码模块中 但随后在 Excel 中我可以看到宏列表中的所有模块 而我实际上只想要列表中的主要模块 我猜想我
  • SWI-Prolog 中的跨模块“接口”调用

    这可能是 SWI Prolog 模块系统特有的 假设我们有三个 Prolog 模块 在 SWI Prolog 模块系统中 robin 在文件中robin pl arthur 在文件中arthur pl helper 在文件中helper p

随机推荐

  • 共享 OpenGL VAO/VBO/等。通过 QGLWidget

    我正在使用 QGLWidgets 的 3 层层次结构在我的类似 CAD 的应用程序中的 5 个 OpenGL 视口之间共享着色器和顶点数据 根上下文用于编译应用程序范围的着色器 每个文档上下文用于共享模型顶点数据 视口上下文是实际进行渲染的
  • 如何在 XML 属性值中包含 &、<、> 等

    我想创建一个 XML 文件 用于存储 Java 程序的结构 我能够成功解析 Java 程序并根据需要创建标签 当我尝试将源代码包含在标签中时 问题就出现了 因为 Java 源代码可能使用大量实体引用和保留字符 例如 lt gt 我无法创建有
  • d3 过滤后无法附加完整数据

    我有一个项目的简化版本 我将其浓缩为以下片段 var margins top 20 bottom 300 left 100 right 100 var height 600 var width 1200 var totalWidth wid
  • 将 GraphML 转换为 GV 或 Dot 文件

    如何使用 graphml 文件作为输入在 graphviz 中绘制图形 I know graphviz附带graphml2gv为此目的 但是当我尝试从命令提示符运行此命令时 我收到此消息 cvtgxl not configured for
  • 如何在我的父 git 项目中使用 git 存储库?

    我尝试使用子模块将 github 存储库中的副本保留在我的第 3 方目录中 创建并获取文件后 当我从项目提交时 它只能看到文件夹 看不到文件 是的 文件在那里 有具体命令吗 在 GitHub 上 你只会看到一个灰色文件夹 https sta
  • Jackson 中的 readValue 和 readTree:何时使用哪个?

    我刚刚开始使用 Jackson JSON 库 Jackson 是一个非常强大的库 但它有非常广泛的 API 很多事情可以通过多种方式完成 这使得你很难在杰克逊找到自己的方式 如何知道什么是正确 最好的做事方式 为什么我要使用这个解决方案 S
  • C 中的递归函数:return 总是必要的吗?

    这是我第一次使用递归函数 我编写的这个函数如果仅包含按升序排列的字母 则返回字符串的大小 否则返回 1 在我取出第二个 返回 后 我不明白为什么它对这两个代码都有效 一个比另一个更浪费吗 希望有一些见解 with returnonly as
  • opencv4nodejs如何计算拉普拉斯方差的模糊度

    我有一个代码 const cv require opencv4nodejs let text let image cv imread images focused jpg let gray image cvtColor cv COLOR B
  • Apache Kafka 0.9.0.0 显示所有带分区的主题

    我目前正在评估 Apache Kafka 我有一个简单的消费者 应该从特定主题分区读取消息 这是我的客户 public static void main String args Properties props new Properties
  • Pyspark dataframe 获取列的所有值

    我想获取 pyspark 数据框中列的所有值 我做了一些搜索 但从未找到有效且简短的解决方案 假设我想在名为 name 的列中获取一个值 我有一个解决方案 sum dataframe select name toPandas values
  • 如何停止 Kubernetes 控制平面 Pod?

    只是好奇 使用 mesos 我已经习惯了能够做到这一点systemctl stop mesos master and systemctl start mesos master 如果我因某种原因需要退回 对于 k8s 控制平面中有多个组件需要
  • 检查端口是否开放

    我似乎找不到任何东西可以告诉我路由器中的端口是否打开 这可能吗 我现在拥有的代码似乎并不能真正工作 private void ScanPort string hostname localhost int portno 9081 IPAddr
  • 如何在Maven项目中包含本地jar文件[重复]

    这个问题在这里已经有答案了 我不想将一些 jar 安装到 Maven 存储库 本地 远程 中 特别是我有一些 jar 文件位于 c work projects myapp src main webapp WEB INF lib test j
  • Asciifolding 不起作用 Elastic Search Rails

    我在试图获得 阿斯奇折叠 为我的 Rails 应用程序工作 我想搜索包含 的单词accented 例如我想要的字符 for ige 当我搜索时出现 foroige 我已经尝试了很多事情 下面是其中的一些 analysis analyzer
  • Cocoa:WKWebView / WebView 无法打开 Gmail 或 Inbox 内的链接

    我是开发者Boxy http boxyapp co 一个著名的 Inbox by Gmail 原生包装器 我想询问是否有人能够帮助解决我从开发第一天起就一直在努力解决的问题 问题是这样的 链接inbox google com http in
  • Newtonsoft转义JSON字符串无法反序列化为对象

    问题背景 我通过 HttpResponseMessage 接收 JSON 响应 如下所示 var jsonString response Content ReadAsStringAsync Result 这给了我以下简单的转义 JSON 字
  • Python 中“with”语句的语法无效

    我正在为 linux maemo 编写一个简单的 python 应用程序 不过我得到了SyntaxError invalid syntax第 23 行 with open file w as fileh 代码可以在这里看到 http pas
  • 如何查看一个类是否实现了 Roslyn 接口

    我还是新来的Roslyn 所以希望这不是一个太愚蠢的问题 我正在寻找一种观察的方式如果一个类已经实现了接口的所有方法如果没有 则突出显示该接口 就像内置的 实现接口 一样 到目前为止 我可以查看方法名称是否已实现 但我还没有找到一种方法来查
  • std::pair:构造函数限制太多?

    我偶然发现了新的令人惊讶的行为std pair构造函数 是 C 11 中引入的 我在使用时发现了这个问题std pair
  • 如何在与程序相同的文件中声明和使用 Perl 6 模块?

    有时我不需要多个文件 特别是当我想保留一个可以在以后变成其他东西的良好结构的想法时 我想做这样的事情 module Foo sub foo Int D number is export say In Foo foo 137 运行这个 我得到