小编cxw*_*cxw的帖子

18
推荐指数
2
解决办法
4万
查看次数

我应该如何在Perl中定义"静态"子程序?

我以前在Java工作,所以也许这个问题是面向Java的Perl问题......无论如何,我已经创建了一个PersonMoose.

现在,我想添加一些"静态"的子程序,也就是说,它们不是指特定的Person,但仍然与Person包密切相关.例如,sub sort_persons获取一个Person对象数组.

在Java中,我只是声明这样的函数static.但是在Perl中......这样做的常见方法是什么?

ps我认为我所指的Perlish术语是"类方法".

oop perl static-methods packages function

17
推荐指数
1
解决办法
4159
查看次数

如何在bitbucket wiki的markdown中逃避"@"

任何人都知道如何@在BitBucket维基上的降价中逃脱角色?在我的情况下,@紧接着是恰好是某人的用户名的单词,即@blahblah.到目前为止我尝试过的:

\@  
'@  
&\#64;  
Run Code Online (Sandbox Code Playgroud)

但这些都不起作用.屏蔽只是被忽略了,当我使用字符代码时,它只是按原样输出.

markdown bitbucket

15
推荐指数
2
解决办法
3986
查看次数

适用于3.7 PEP 553之前版本的python条件调试断点单行代码,其行为类似于Perl的$ DB :: single = 1

在PEP 553 breakpoint()实用程序之前的python版本中,推荐的方法是添加(理想情况下是单行)代码以具有可以在某种条件下忽略的断点(例如,全局调试标志或args.debug标志)的推荐方法。

在Perl中,我习惯于使用$DB::single=1;1;单行,我知道我可以放心地留在代码中,perl code.pl除非明确调用,否则不会影响的正常运行perl -d code.pl。例如:

my $a = 1;
$DB::single=1;1; # breakpoint line
my $b = 2;
print "$a $b\n";
Run Code Online (Sandbox Code Playgroud)

如果我将此代码运行为:perl code.pl,它将运行完成。如果我使用以下代码运行该代码:perl -d code.plpdb它将在断点行处停止(而不是在带有my $b = 2;语句的下一行之前),因为它在1;语句后包含一条$DB::single=1;语句;

同样,如果我写:

my $debug = 1;
my $a = 1;
$DB::single=$debug;1; # first breakpoint line
my $b = 2;
$DB::single=$debug;1; # second breakpoint line
print "$a $b\n";
# [...] Lots more code sprinkled …
Run Code Online (Sandbox Code Playgroud)

python debugging perl breakpoints conditional-execution

15
推荐指数
2
解决办法
327
查看次数

在Perl中,我如何获得多组笛卡尔积?

我想在Perl中进行排列.例如,我有三个数组:["big", "tiny", "small"]然后我有["red", "yellow", "green"],也有["apple", "pear", "banana"].

如何得到:

["big", "red", "apple"]
["big", "red", "pear"]

..etc..

["small", "green", "banana"]

我理解这叫做排列.但我不知道该怎么做.另外我不知道我可以拥有多少阵列.可能有三个或四个,所以我不想做嵌套循环.

perl cartesian-product list-manipulation cross-product

13
推荐指数
4
解决办法
3535
查看次数

Glsl mod vs Hlsl fmod

我在HLSL中实现了这个问题中描述的螺旋GLSL着色器,但结果并不相同.我认为这是因为mod我已经fmod在HLSL中翻译了GLSL 中的函数.我怀疑只有在fmod函数输入中有负数时才会出现此问题.

我已经尝试mod通过调用我已经制作的函数替换调用来执行GLSL文档中描述的函数并且它可以工作:

mod返回xmodulo 的值y.计算方法如下x - y * floor(x/y).

我使用的工作代码fmod是:

float mod(float x, float y)
{
  return x - y * floor(x/y)
}
Run Code Online (Sandbox Code Playgroud)

与GLSL相比mod,MSDN表示 HLSL fmod功能可以做到这一点:

计算浮点余数,使得x = i * y + f其中i,整数f具有与其相同的符号x,并且绝对值f小于绝对值y.

我使用了HLSL到GLSL转换器,并将该fmod函数翻译为mod.但是,我不知道我是否可以假设mod转换为fmod …

opengl math directx glsl hlsl

13
推荐指数
1
解决办法
2万
查看次数

PowerShell命令行上的链命令

PowerShell是否具有与sh(和衍生物)的此命令构造等效的内容:

$ cmd1 && cmd2
Run Code Online (Sandbox Code Playgroud)

其中,cmd2仅在运行时cmd1退出成功地?

我知道你可以用分号组合命令.但是,这忽略了命令的退出状态.

shell powershell conditional powershell-2.0

12
推荐指数
2
解决办法
3万
查看次数

通过 Chrome DevTools API 或面板以编程方式访问 [[Scopes]] (闭包变量)?(不在断点处)

2014 年, JS 代码无法从闭包外部访问闭包内部的变量。从那时起,Chrome 的内部结构已更改为使用[[Scopes]]而不是Closure.

\n\n

Chrome DevTools 现在(2018 年)可以以[[Scopes]]编程方式读取吗?如果是这样,是否有现有的 DevTools 扩展可以做到这一点?

\n\n

用例:检查使用 RequireJS 加载的 UMD 模块内的变量。我知道我可以使用面板在断点或语句处执行此操作,但希望即使不在断点处也能执行此操作。debuggerScopes

\n\n

编辑截至 2017 年,无法访问[[FunctionLocation]],但我不知道[[Scopes]]

\n\n

尝试

\n\n

我调查了以下内容但没有成功(模块工厂函数名称main):

\n\n
    \n
  • 此评论提到了console.dir(),但没有以编程方式访问 的输出console.dir()。我可以console.dir({main})手动使用然后扩展结果,但不能以编程方式。
  • \n
  • 从 DevTools 控制台,我可以使用inspect({function})per this。这让我更接近,但不是[[Scopes]]

    \n\n
    > var x = inspect({main})\n> x.main.name\n\xe2\x86\x90 "main"\n> x.main[Symbol(\'Scopes\')]\n\xe2\x86\x90 undefined\n> x.main[\'[[Scopes]]\']\n\xe2\x86\x90 …
    Run Code Online (Sandbox Code Playgroud)

javascript closures google-chrome inspect google-chrome-devtools

12
推荐指数
0
解决办法
3045
查看次数

定义⊤符号

我正在尝试在Perl6中编写一些逻辑语句.

我做了逻辑运算符:

multi sub prefix:<¬> ($n) {
    return not $n;
}

multi sub infix:<?> ($n, $b) {
        return ($n and $b);
}

multi sub infix:<?> ($n, $b) {
        return ($n or $b);
}

multi sub infix:<?> ($n, $b) {
        if $n == True and $b == True {
                return True;
        } elsif $n == True and $b == False {
                return False;
        } elsif $n == False {
                return True;
        }
}

multi sub infix:<?> ($n, $b) {
        return $b …
Run Code Online (Sandbox Code Playgroud)

constants declaration initializer perl6 raku

11
推荐指数
1
解决办法
190
查看次数

"我们的"或"使用变量"中的什么魔法满足"使用严格的qw(vars)"?

我有工作代码,但我试图理解为什么它的工作原理.我也想更多地了解Perl 5中(的内部perlbrew,perl-5.26.1,Cygwin x64).

我知道从perlvarstrictuse strict 'vars'作品由设置标志$^H.然后Perl ::根据这些标志测试对非变量的访问.不知怎的,既ouruse vars标记变量,使他们通过测试.他们是怎么做到的?

例如:

perl -E 'package Foo;
    use strict "vars";
    use vars qw($foo);
    say $foo;'
Run Code Online (Sandbox Code Playgroud)

运行正常(虽然它不产生输出).根据来源use vars,我尝试了这个,我认为会有同样的效果:

perl -E 'package Foo;
    use strict "vars";
    my $sym = "Foo::foo";          # <-- These two lines pulled straight
    *$sym = \$$sym;                # <-- from the source for the vars pragma
    say $foo;'
Run Code Online (Sandbox Code Playgroud)

但是,它给了我一个错误: …

perl packages scoping variable-declaration language-lawyer

11
推荐指数
1
解决办法
321
查看次数