这是否在最近更新的标准下有效?
auto main = [](int argc, char* argv[]) -> int
{
return 0;
};
Run Code Online (Sandbox Code Playgroud)
我最好的猜测是它取决于main()必须是一个函数,还是允许它是可调用的任何全局范围符号(with ()).
当我有这样的模块时:
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命名空间
如果我将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) 是否可以在输入之前立即注册要运行的功能main?我知道所有全局对象都是在进入之前创建的main,所以我可以将代码放在全局对象的构造函数中,但这并不能保证任何特定的顺序.我想做的是将一些注册码放入构造函数中,但是唉,我不知道该放什么:)我想这是高度系统特定的?
我开始编写我的第一个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?
有逻辑的主要应用程序,我们将应用程序扩展到Apple Watch.
添加目标xCode后,再创建2个应用程序:扩展代码和监视工具包应用程序.
问题:扩展程序中的代码如何重用已准备好的主要iOS应用程序的逻辑?扩展程序应用程序如何与主App通信并发送命令.
我的请求看起来很不正统,但我想快速打包一个旧的存储库,主要由 python 可执行脚本组成。
问题在于这些脚本没有被设计为模块,因此其中一些脚本直接在模块顶层执行代码,而另一些脚本则具有该部分if __name__=='__main__'。
您将如何使用 setuptools 分发这些脚本而不需要太多重写?
scripts的选项下setup(),但不建议这样做,而且它也不允许我重命名它们。main()在所有这些脚本中定义函数,也是因为有些脚本调用奇怪的递归函数,对全局变量有副作用,所以我有点害怕破坏东西。"myscript=mypkg.myscript"而不是"myscript=mypkg.myscript:main")时,它在安装后逻辑上抱怨模块不可调用。有没有办法从模块创建脚本?至少当他们有一个if __name__=='__main__'?
编写Deno脚本时,有时它们可以使用命令行执行deno run,但同时可能包含可以通过从另一个脚本导入来使用的库。
在 Deno 中执行此操作的正确方法是什么?
Python 中的等效内容是放在脚本的底部:
if __name__ == '__main__':
main(sys.argv[1:])
Run Code Online (Sandbox Code Playgroud)
这应该如何完成Deno?
Python的click模块有choice-options,当输入无效时:
\nimport 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()\nRun 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}\nRun Code Online (Sandbox Code Playgroud)\n当提供无效选择时,Raku 仅输出用法,这不太好:
\nUsage:\n demo.raku [--hash_type[=Any where { ... }]]\n --hash_type[=Any where { ... }] the hash code\nRun Code Online (Sandbox Code Playgroud)\n那么,如果命令行输入的值不在 MAIN 例程中的有效选择列表中,如何获得更好的错误提示呢? …
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以便它捕获通过管道输入的字符串?