出于(主要)教学原因,我正在尝试在 GitHub 操作中运行此工作流程:
name: "We Perl"
on:
issues:
types: [opened, edited, milestoned]
jobs:
seasonal_greetings:
runs-on: windows-latest
steps:
- name: Maybe greet
id: maybe-greet
env:
HEY: "Hey you!"
GREETING: "Merry Xmas to you too!"
BODY: ${{ github.event.issue.body }}
run: |
$output=(perl -e 'print ($ENV{BODY} =~ /Merry/)?$ENV{GREETING}:$ENV{HEY};')
Write-Output "::set-output name=GREET::$output"
produce_comment:
name: Respond to issue
runs-on: ubuntu-latest
steps:
- name: Dump job context
env:
JOB_CONTEXT: ${{ jobs.maybe-greet.steps.id }}
run: echo "$JOB_CONTEXT"
Run Code Online (Sandbox Code Playgroud)
我需要两个不同的作业,因为它们使用不同的上下文(操作系统),但是我需要将第一个作业中的步骤输出到第二个作业。我正在尝试使用此处jobs找到的几种上下文组合,但似乎没有任何方法可以做到这一点。显然,只是一个 YAML 变量的名称,它实际上没有上下文,上下文只包含成功或失败。任何的想法?jobsjob
在我测试的语言中,- (x div y )不等于-x div y; 我已经//在Python中,/在Ruby中,div在Perl 6中进行了测试; C有类似的行为.
这种行为通常是根据规范,因为div通常被定义为舍入向下分工的结果,但它不从的观点算术点做出很大的意义,因为它使div行为以不同的方式取决于标志,它引起混乱,如这篇文章如何在Python中完成.
这个设计决策背后是否有一些特定的理由,或者只是div从头开始定义?显然Guido van Rossum在博客文章中使用了一致性论证,解释了它是如何在Python中完成的,但如果你选择整理,你也可以有一致性.
我对诗歌很陌生,想用 pytest 来设置它。我在以下设置中有一个包 mylib
\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dist\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 mylib-0.0.1-py3-none-any.whl\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 mylib-0.0.1.tar.gz\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 poetry.lock\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 mylib\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 functions.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 utils.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pyproject.toml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tests\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 test_functions.py\nRun Code Online (Sandbox Code Playgroud)\n在 test_functions 我有
\nimport mylib\nRun Code Online (Sandbox Code Playgroud)\n然而,当我跑步时
\npoetry run pytest\nRun Code Online (Sandbox Code Playgroud)\n它抱怨mylib没有被包括在内。我可以跑
pip install dist/mylib-0.0.1-py3-none-any.whl\nRun Code Online (Sandbox Code Playgroud)\n但这会使我的 python 环境与 mylib 变得混乱。我也想将该环境用于其他包。
\n我的问题是:使用诗歌和 pytest 的正确方法是什么?
\n我的底层 python 环境是干净的 pyenv python 3.8。使用 pyproject.toml 我为 mylib 创建一个基于项目的虚拟环境。
\n我在GitHub的开放小说中保留的一个东西是我想自动设置第一行的单词列表,这是字典中单词的数量.我的第一个选择是编写一个预提交钩子,它读取文件,计算单词,重写第一行并再次写回.这是代码
PRE_COMMIT {
my ($git) = @_;
my $branch = $git->command(qw/rev-parse --abbrev-ref HEAD/);
say "Pre-commit hook in $branch";
if ( $branch =~ /master/ ) {
my $changed = $git->command(qw/show --name-status/);
my @changed_files = ($changed =~ /\s\w\s+(\S+)/g);
if ( $words ~~ @changed_files ) {
my @words_content = read_file( $words );
say "I have $#words_content words";
$words_content[0] = "$#words_content\n";
write_file( $words, @words_content );
}
}
};
Run Code Online (Sandbox Code Playgroud)
但是,由于该文件已经暂存,我收到此错误
错误:checkout将覆盖对以下文件的本地更改:text/words.dic请在提交更改或存储更改之前切换分支.中止
可能最好将它作为一个后提交钩子并将其更改为下一次提交?或者做一些完全不同的事情?一般问题是:如果您想在提交期间处理和更改文件的内容,那么正确的方法是什么?
是从Rakudo Perl 6使用CPAN的Perl 5模块的方法吗?
例如,如何在Perl 6中使用尚未移植的古老的Perl 5模块CGI.
更新:
这个早期Perl 6模块的这个时髦代码是什么:
use CGI:from<perl5>;
Run Code Online (Sandbox Code Playgroud)
是否使用":from"指令来唤起某种Perl 5兼容层.似乎找不到任何关于它的文档.
Perl 6中同时存在占位符变量和主题变量。例如,以下两个语句相同
say ( $_ * 2 for 3, 9 ); # use topic variables
say ( { $^i * 2 } for 3, 9 ); # use placeholder variables
Run Code Online (Sandbox Code Playgroud)
在我看来,从主题变量中获得的唯一好处就是节省了一些键盘笔触。
我的问题是:是否存在用例,其中主题变量比占位符变量方便得多?
Perl 5有encodingpragma或Filter::Encoding模块,但是,我没有在Perl 6中发现任何类似的东西.我想最终会创建源过滤器,但是暂时,你能在Perl 6脚本中使用其他编码吗?
Eslint 不会识别类声明中标有 # 的私有字段,即使我使用的是 NodeJS 版本 12(支持它们)。
我正在运行 NodeJS v12.7.0。我已经搜索了所有 DuckDuckGo 和 Google,但在 eslint 中找不到一个插件或选项来告诉它接受私有字段符号 (#)。我已经emca设置为 version 10。
class MyClass {
#foo = 'bar';
#bar = 'foo';
constructor(foo, bar) {
this.#foo = foo;
this.#bar = bar;
}
...
};
Run Code Online (Sandbox Code Playgroud)
当我运行eslint上面的代码时,我得到:
2:3 error Parsing error: Unexpected character '#'
我正在处理的项目不使用 Babel,我不想仅仅为了使私有字段工作而必须包含它。任何想法如何使这项工作无需求助于使用 Babel?
(当然没有反对 Babel,只是在这个特定的项目上我不想要它)。
如果语法不匹配,有没有办法让Perl 6生成错误消息?或者至少返回它处理的最后一个数据的位置?如果从解析器获得的所有内容都是"不匹配",则很难修复语法错误.
如果替换是在变量中传递的,那么第一个和第二个替换是否相等?
#!/usr/bin/env perl6
use v6;
my $foo = 'switch';
my $t1 = my $t2 = my $t3 = my $t4 = 'this has a $foo in it';
my $replace = prompt( ':' ); # $0
$t1.=subst( / ( \$ \w+ ) /, $replace );
$t2.=subst( / ( \$ \w+ ) /, { $replace } );
$t3.=subst( / ( \$ \w+ ) /, { $replace.EVAL } );
$t4.=subst( / ( \$ \w+ ) /, { ( $replace.EVAL ).EVAL } );
say …Run Code Online (Sandbox Code Playgroud)