命令行 – 为什么我的命令行参数被解释为布尔值(Perl 6)?

命令行 – 为什么我的命令行参数被解释为布尔值(Perl 6)?,第1张

概述鉴于此计划: #!/bin/env perl6sub MAIN ($filename='test.fq', :$seed=floor(now) ){ say "Seed is $seed";} 当我在没有任何命令行参数的情况下运行它时,它工作正常.但是,当我给它一个种子的命令行参数时,它说它的值为True: ./seed.p6 --seed 1234Seed is True 为什么 鉴于此计划:

#!/bin/env perl6sub MAIN ($filename='test.fq',:$seed=floor(Now) ){    say "Seed is $seed";}

当我在没有任何命令行参数的情况下运行它时,它工作正常.但是,当我给它一个种子的命令行参数时,它说它的值为True:

./seed.p6 --seed 1234Seed is True

为什么数字1234被解释为布尔值?

解决方法 Perl 6的MAIN参数处理可以很好地逐步打字.参数可以并且应该进行类型转换以减少歧义并改进验证:

#!/bin/env perl6                                                                                                                                    sub MAIN (Str $filename='test.fq',Int :$seed=floor(Now)){    say "Seed is $seed.";}

在将种子类型转换为Int之后,必须为此选项指定一个数字参数,并且不再默认为布尔值:

perl6 ./seed.pl -seed 1234Usage:  ./seed.pl [--seed=<Int>] [<filename>] perl6 ./seed.pl -seed=abcUsage:  ./seed.pl [--seed=<Int>] [<filename>] perl6 ./seed.pl -seed=1234Seed is 1234.
总结

以上是内存溢出为你收集整理的命令行 – 为什么我的命令行参数被解释为布尔值(Perl 6)?全部内容,希望文章能够帮你解决命令行 – 为什么我的命令行参数被解释为布尔值(Perl 6)?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1209786.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存