gpt4 book ai didi

optimization - 优化而不牺牲通常的工作流程 : arguments, POD 等

转载 作者:行者123 更新时间:2023-12-04 11:49:55 25 4
gpt4 key购买 nike

https://martimm.github.io/gnome-gtk3/content-docs/tutorial/Application/sceleton.html ,缩写:

In Raku, it is important that the main program is kept small. This is because all code, program and modules are parsed and compiled into an intermediate code which will be executed by a virtual machine. Most of the time that will be MoarVM but there is also a JVM and later possibly others. Anyways, before running, the compiled modules are saved into .precomp directories but not the program. This means that the program always get parsed and compiled before running and that is the reason to keep it small.

use UserAppClass;

my UserAppClass $user-app .= new;
exit($user-app.run);

Well, you can’t get smaller than this …, or maybe use this one-liner; exit(UserAppClass.new.run).

The rest of the code is defined in the UserAppClass.


非常好。
  • 现在,我们的程序需要接受参数。 sub MAIN解析参数并生成 $*USAGE免费,所以我们将使用 sub MAIN .
    我们把sub MAINuse d by .raku程序.rakumod但我们得到了 .raku程序对参数一无所知。和 sub MAIN在模块中时不执行。
    我们把sub MAIN.raku程序,以便它理解参数,但它不再小。
  • 此外,嵌入式 POD因为该程序可能会驻留在 .raku 中程序。
    PODuse d by .raku程序.rakumod我们得到了 POD有点隐蔽。
    POD.raku程序,它不再小了。
  • 另外,这种方法是否有任何命名约定?
    说,你有一个程序 Report when your coffee is ready .它的 sub MAINcoffee-ready.raku ,还有你 use QueryCoffeeMachine.rakumod .
    您更改了文件的布局,现在更改了相同的程序 Report when your coffee is ready你有一个 coffee-ready.raku发射器,一个 coffee-ready.MAIN.rakumodsub MAIN的功能和一个 QueryCoffeeMachine.rakumod .
    我相信 QueryCoffeeMachine.rakumod保持完整,
    我觉得coffee-ready.raku尽管更改了内容,也应该保留名称
    但应该如何coffee-ready.MAIN.rakumod被命名?
  • 最佳答案

    Anyways, before running, the compiled modules are saved into .precomp directories but not the program.



    Aiui 有人可以将预编译扩展到主程序文件,但对于核心开发人员来说这是一个低优先级,因为可以使用以下解决方案来解决它:
    1. ... sub MAIN is not executed when in a module.

    如果将其导出/导入到主程序中,模块的 MAIN运行主程序时将执行:
    # MAIN.rakumod
    our sub MAIN (Int $int-arg, Str $str-arg) { $int-arg }

    # main.raku
    use lib '.';
    use MAIN;
    1. ... we get the .raku program ignorant of the arguments

    如果您 wrap进口 MAIN在主程序中,您将知道参数:
    # main.raku
    use lib '.';
    use MAIN;
    &MAIN.wrap: -> |args { say args; callsame }
    (如果在 CLI 中传递的参数与从 MAIN 模块导入的 MAIN 子的签名不匹配,则显示使用消息。否则 main.raku 中的包装器被调用并且可以做它想做的事情使用传递的参数,并决定如何调用导入的 MAIN 。)
    (我从 Can I capture the returned value of a routine used in RUN-MAIN? 中解除了这个解决方案。)
    1. Put POD into a ... .rakumod and we get the POD somewhat hidden.

    我不知道现有的方法可以避免这种情况。 (也许可以查看 Access POD from another Raku file 以了解如何至少访问另一个文件中的 POD。)
    也许一个新的问题只集中在那个方面是合适的?
    1. how should .MAIN.rakumod be named?

    如果是我,在我的头顶上,我可能会有一个 Coffee-Ready文件夹,然后在其中,一个 coffee-ready.raku , MAIN.rakumod , 和 QueryCoffeeMachine.rakumod .

    关于optimization - 优化而不牺牲通常的工作流程 : arguments, POD 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68729342/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com