标签: program-entry-point

主(或入口点)函数可以实现为lambda吗?

这是否在最近更新的标准下有效?

auto main = [](int argc, char* argv[]) -> int
{
    return 0;
};
Run Code Online (Sandbox Code Playgroud)

我最好的猜测是它取决于main()必须是一个函数,还是允许它是可调用的任何全局范围符号(with ()).

c++ lambda program-entry-point c++11

8
推荐指数
2
解决办法
454
查看次数

Ruby,如何引用Root命名空间?

当我有这样的模块时:

module MyModule
  class MyClass
  end
end
Run Code Online (Sandbox Code Playgroud)

我可以访问/修改MyModule引用它:

MyModule.const_set("MY_CONSTANT", "value")
Run Code Online (Sandbox Code Playgroud)

但是Root命名空间呢,那个::?,我正在寻找类似的东西:

::.const_set("MY_CONSTANT", "value")
Run Code Online (Sandbox Code Playgroud)

const_set事情仅仅是一个例子,请不要试图解决这个具体的情况,但实际上在做参考的方式Root命名空间

ruby program-entry-point

8
推荐指数
1
解决办法
2169
查看次数

C++声明'main'作为函数的引用?

如果我将main定义为函数的引用怎么办?

#include<iostream>
#include<cstring>

using namespace std;

int main1()
{
    cout << "Hello World from main1 function!" << endl;
    return 0;
}

int (&main)() = main1;
Run Code Online (Sandbox Code Playgroud)

会发生什么?我在一个在线编译器中测试了错误"Segmentation fault":

这里

在VC++ 2013下,它将在运行时创建程序崩溃!

将编译将函数指针的数据作为代码调用的代码,该代码将在启动时立即崩溃.

我还想要一个关于这个的ISO C++标准报价.

如果你想根据某些宏定义2个入口点中的任何一个,这个概念会很有用:

int main1();

int main2();

#ifdef _0_ENTRY
int (&main)() = main1;
#else
int (&main)() = main2;
#endif
Run Code Online (Sandbox Code Playgroud)

c++ iso program-entry-point reference language-lawyer

8
推荐指数
2
解决办法
317
查看次数

在main之前立即调用函数

是否可以在输入之前立即注册要运行的功能main?我知道所有全局对象都是在进入之前创建的main,所以我可以将代码放在全局对象的构造函数中,但这并不能保证任何特定的顺序.我想做的是将一些注册码放入构造函数中,但是唉,我不知道该放什么:)我想这是高度系统特定的?

c++ program-entry-point function callback

7
推荐指数
1
解决办法
2141
查看次数

为什么包含main方法的类没有实例化,在Java中仍然可以?

我开始编写我的第一个Java程序.

class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); // Display the string.
    }
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,程序运行正常.但根据我的OOP知识,a class只是一个抽象的概念,并没有生出来,直到你创造了一个同类的对象.然后,通过该对象,我们调用类中的方法/函数.

但是在这个特定的例子中,似乎main即使没有创建对象也会调用该方法class HelloWorldApp

对象是否在其他地方创建?如果是这样,那部分代码如何知道我的class名字HelloWorldApp

java oop methods program-entry-point

7
推荐指数
1
解决办法
2335
查看次数

Apple Watch,WatchKit Extension和主要应用程序

有逻辑的主要应用程序,我们将应用程序扩展到Apple Watch.

添加目标xCode后,再创建2个应用程序:扩展代码和监视工具包应用程序.

问题:扩展程序中的代码如何重用已准备好的主要iOS应用程序的逻辑?扩展程序应用程序如何与主App通信并发送命令.

program-entry-point ios watchkit

7
推荐指数
1
解决办法
4568
查看次数

Python Setuptools:添加脚本的快速方法,无需“main”函数作为“console_scripts”入口点

我的请求看起来很不正统,但我想快速打包一个旧的存储库,主要由 python 可执行脚本组成。

问题在于这些脚本没有被设计为模块,因此其中一些脚本直接在模块顶层执行代码,而另一些脚本则具有该部分if __name__=='__main__'

您将如何使用 setuptools 分发这些脚本而不需要太多重写?

  • 我知道我可以将它们放在scripts的选项下setup(),但不建议这样做,而且它也不允许我重命名它们。
  • 我想跳过main()在所有这些脚本中定义函数,也是因为有些脚本调用奇怪的递归函数,对全局变量有副作用,所以我有点害怕破坏东西。
  • 当我尝试仅提供模块名称作为console_scripts(例如,"myscript=mypkg.myscript"而不是"myscript=mypkg.myscript:main")时,它在安装后逻辑上抱怨模块不可调用。

有没有办法从模块创建脚本?至少当他们有一个if __name__=='__main__'

python program-entry-point setuptools entry-point

7
推荐指数
1
解决办法
1447
查看次数

在 Deno 中定义 main() 脚本的正确方法

编写Deno脚本时,有时它们可​​以使用命令行执行deno run,但同时可能包含可以通过从另一个脚本导入来使用的库。

在 Deno 中执行此操作的正确方法是什么?

Python 中的等效内容是放在脚本的底部:

if __name__ == '__main__':
    main(sys.argv[1:])
Run Code Online (Sandbox Code Playgroud)

这应该如何完成Deno

program-entry-point deno

7
推荐指数
1
解决办法
702
查看次数

如果命令行的输入值不在 MAIN 例程的有效选择列表中,如何获得更好的错误提示?

Python的click模块有choice-options,当输入无效时:

\n
import click\n\n@click.command()\n@click.option(\'--hash-type\',\n              type=click.Choice([\'MD5\', \'SHA1\'], case_sensitive=False))\n\ndef digest(hash_type):\n    click.echo(hash_type)\n\n# python demo.py --hash-type=HASH256\n# Error: Invalid value for \'--hash-type\': \'HASH256\' is not one of \'MD5\', \'SHA1\'.\nif __name__=="__main__":\n    digest()\n
Run Code Online (Sandbox Code Playgroud)\n

当用户输入无效的选择时,上面的脚本将退出,并为您打印出有效的选择,这很方便。

\n

我尝试用 Raku 重写它:

\n
# raku demo.raku --hash_type=HASH256\nsub MAIN(\n    :$hash_type where * \xe2\x88\x88 [\'MD5\', \'SHA1\'], #= the hash code\n) {\n    say $hash_type;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

当提供无效选择时,Raku 仅输出用法,这不太好:

\n
Usage:\n  demo.raku [--hash_type[=Any where { ... }]]\n  --hash_type[=Any where { ... }]    the hash code\n
Run Code Online (Sandbox Code Playgroud)\n

那么,如果命令行输入的值不在 MAIN 例程中的有效选择列表中,如何获得更好的错误提示呢? …

program-entry-point raku

7
推荐指数
1
解决办法
263
查看次数

如何通过管道将字符串输入 Raku 程序?

foo.raku

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

sub MAIN (Str $some-text = $*IN.slurp, Bool :$verbose) {
    say "Your text:" if $verbose;
    say $some-text;
}          

Run Code Online (Sandbox Code Playgroud)

当我运行它时

~% echo "Hello World" | ./foo.raku --verbose
Run Code Online (Sandbox Code Playgroud)

我得到:

Your text:

Run Code Online (Sandbox Code Playgroud)

如何写入签名MAIN以便它捕获通过管道输入的字符串?

program-entry-point pipe signature raku

7
推荐指数
1
解决办法
137
查看次数