当前位置: 首页 > 知识库问答 >
问题:

如何使用EVAL将参数传递给子程序?

艾正浩
2023-03-14

我正在用Raku做实验,试图弄明白如何用子命令编写程序。当我运行时,/这个程序毫无意义

#! /usr/bin/env raku
use v6;

sub MAIN($cmd, *@subcommands) {
    $cmd.EVAL;
}

sub blah() { say 'running blah'; };

我得到运行的废话输出。

但这是我能做到的。我尝试过各种方法,但我看不到明显的方法将@subcommands传递到blah函数。

我甚至不确定EVAL是否是一条可行之路,但我找不到任何其他解决方案。


共有2个答案

罗祺
2023-03-14

使MAIN成为多重也可能是一个解决方案:

multi sub MAIN('blah', *@rest) {
    say "running blah with: @rest[]";
}
multi sub MAIN('frobnicate', $this) {
    say "frobnicating $this";
}
顾嘉德
2023-03-14

我认为这里不一定需要EVAL。您可以进行间接查找,即。,

&::($cmd)(@sub-commands);

此时

那么我们有

sub MAIN($cmd, *@sub-commands) {
    &::($cmd)(@sub-commands);
}

sub blah(*@args) {
    say "running `blah` with `{@args}`";
}

和运行作为

$ raku ./program blah this and that

给予

running `blah` with `this and that`

 类似资料:
  • 问题内容: 我正在使用pm2启动我的应用程序,但无法将参数传递给它。我正在使用的命令是pm2 start app.js-dev。尽管这永远有效。 问题答案: 您可以按照此票证所述进行操作:https : //github.com/Unitech/pm2/issues/13 尽管如果通过环境,则可能需要考虑利用环境变量。使用此工具,您可以创建一个变量,该环境中的任何进程都可以访问该变量。 因此,您有

  • 问题内容: 我正在这样运行我的JavaFX应用程序: 类扩展。在特殊的FX线程中启动JavaFX窗口,但是在我的main方法中,我什至没有类的实例。 如何将非字符串参数(在我的情况下为 控制器 )传递给实例?它是有缺陷的设计吗? 问题答案: 通常,除了传递给您的主程序的程序参数外,无需将参数传递给主应用程序。想要这样做的唯一原因是创建一个可重用的对象。但这并不需要是可重用的,因为这是组装您的应用程

  • 我正在使用GraphQL查询一个对象,该对象将由大约15个不同的REST调用组成。这是我的根查询,我在其中传入查询的ID。这对于正确解析的主要student对象非常有效。但是,我需要弄清楚如何将ID传递给地址解析程序。我尝试将args添加到address对象,但出现了一个错误,表明args没有从Student对象传递下来。所以我的问题是:如何将客户机查询中的参数传递给GraphQL服务器中的子对象

  • 问题内容: 谁能建议我如何将参数传递给线程? 另外,它如何用于匿名类? 问题答案: 你需要将构造函数中的参数传递给Runnable对象: 然后调用它:

  • 问题内容: 我试图将我的数据库对象传递给我的处理程序,而不是具有全局对象。但是我不知道这是否可行,我使用的是Gorilla Mux软件包,我可以看到它把闭包作为第二个参数。 然后定义了我可以使用的参数,理想情况下,我希望拥有这样的第三个参数。 有解决方法吗?还是我需要一个全局数据库对象?我是Go的新手,所以请详细说明可能的答案。 问题答案: 欢迎来到。 可以使用全局变量,特别是数据库对象。 但是,

  • 问题内容: 我正在A中使用RUN指令安装rpm 但是,我想将值“ 2.3”作为参数传递。我的RUN指令应类似于: 哪里 问题答案: 您正在寻找和指导。这些是Docker 1.9中的新功能。查看https://docs.docker.com/engine/reference/builder/#arg。这将允许您添加到,然后使用构建。