小编Zag*_*rax的帖子

如何将模块范围限制为子程序?

如果我运行下一个脚本:

use strict;
use warnings;

sub load {
    use File::Path qw (make_path);
}

load();
make_path('1/2/3/4');

exit 0;
Run Code Online (Sandbox Code Playgroud)

它完美地运作.我想将加载模块的范围限制在子例程中,这样我就不能使用在加载它的子例程之外的模块中声明的子例程.可能吗?

perl scope

4
推荐指数
1
解决办法
259
查看次数

如何将光标移回终端中的一个位置?

我想要显示一个交替角色的动画/,|\.

我怎么总是写在终端的同一个小区?我需要将光标移回一个位置.

perl cursor

3
推荐指数
1
解决办法
3422
查看次数

运营商的"'和">>做什么?

我在http://tour.golang.org上关注"GO之旅" .表15有一些我无法理解的代码.它使用以下语法定义两个常量:

const (
    Big = 1<<100
    Small = Big>>99
)
Run Code Online (Sandbox Code Playgroud)

它根本不清楚我的含义.我试图修改代码并使用不同的值运行它来记录更改,但我无法理解那里发生了什么.

然后,它在表24上再次使用该运算符.它使用以下语法定义变量:

MaxInt uint64 = 1<<64 - 1

当它打印变量时,它会打印:

uint64(18446744073709551615)

uint64类型在哪里.但我无法理解18446744073709551615从哪里来.

operators go

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

找到以素数为模的数的倒数

我正在考虑ax = 1 mod p用p prime 来解决一致性的算法.我在考虑使用费马定理.因为我知道

a ^ (p-1) = 1 mod p

然后

a ^ (p-1) = a * (a ^ (p-2))

这意味着这a ^ (p-2) mod p就是解决方案.不幸的是,这个解决方案虽然在数学上是正确的,但对于计算机并不好,因为对于我必须做的大素数,a ^ (p-2)这通常是不可计算的.

哪种算法对计算机科学有好处?

algorithm

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

使用OnContextItemSelected从ListView项检索文本

我有一个带有删除和类似选项的'经典'上下文菜单的ListView.由于我从SharedPreferences对象中删除,我需要检索密钥,这是设置到ListView项目中的文本.

我试过以下代码:

    @Override
    public boolean onContextItemSelected(MenuItem item){
        AdapterContextMenuInfo saved = (AdapterContextMenuInfo) item.getMenuInfo();

        TextView view = (TextView)findViewById((int) saved.id);

        Log.d("DEBUG:", "before key");
        String key = view.getText().toString();
        Log.d("DEBUG:", "after...");

        switch (item.getItemId()){
            case R.id.conmenu_delete:
                return true;

            case R.id.conmenu_copy:
                return true;

            case R.id.conmenu_send:
                return true;

            default:
                return super.onContextItemSelected(item);
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是,不幸的是,它在尝试从View中检索文本时崩溃,正如我从日志中所知道的那样.

android listview android-contextmenu

3
推荐指数
1
解决办法
4507
查看次数

如何使用Term :: ReadLine来检索命令历史记录?

我有以下脚本,这与文档中的概要段落中的示例几乎相同.

use strict;
use warnings;
use Term::ReadLine;

my $term = Term::ReadLine->new('My shell');
print $term, "\n";
my $prompt = "-> ";

while ( defined ($_ = $term->readline($prompt)) ) {
   print $_, "\n";
   $term->addhistory($_);
}
Run Code Online (Sandbox Code Playgroud)

它执行时没有错误,但不幸的是,即使我单击向上箭头,我也只能得到^[[A并且没有历史记录.我错过了什么?

print $term语句打印Term::ReadLine::Stub=ARRAY(0x223d2b8).

因为我们在这里,我注意到它打印出下划线的提示...但我在文档中找不到任何可能阻止它的东西.有什么办法可以避免吗?

perl readline arrow-keys

3
推荐指数
1
解决办法
2504
查看次数

除非其宽度与父级宽度匹配,否则标签不会在左侧对齐

这是我在这个简单的GUI中使用的代码:

def main():

    DOCROOT_LABEL = 'Document root:'
    PORT_LABEL = 'Listen on port:'
    APPNAME = 'PIPlayD'
    TEXT_HEIGHT = 1
    MF_WIDTH = 400
    MF_HEIGHT = 150

    # Loading main window
    win = Tkinter.Tk(baseName = APPNAME)
    win.wm_title(APPNAME)

    # Setting main frame
    f = Tkinter.Frame(win, width = MF_WIDTH, height = MF_HEIGHT)
    f.pack_propagate(False)


    # Setting labels
    label_DocRoot = Tkinter.Label(f,
                                  width = len(DOCROOT_LABEL),
                                  anchor = Tkinter.W,
                                  justify = Tkinter.LEFT,
                                  text = DOCROOT_LABEL)

    label_Port = Tkinter.Label(f,
                               width = len(PORT_LABEL),
                               anchor = Tkinter.W,
                               justify = Tkinter.LEFT,
                               text = …
Run Code Online (Sandbox Code Playgroud)

python tkinter

3
推荐指数
1
解决办法
8725
查看次数

为什么这个简单的代码使用`exit`而不能使用`_exit`?

请看一下这个示例代码,它使用一个非常完善的编程模式来重定向stdout到管道.

#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv)
{
    int fd[2];
    pipe(fd);

    pid_t pid = fork();
    if (pid == 0) {
        close(fd[0]);
        dup2(fd[1], 1);
        printf("A string");
        _exit(0);
    }

    close(fd[1]);
    char text[1000];
    size_t size;
    int p = 0;
    while ((size = read(fd[0], text+p, 1)) == 1) {
        p++;
    }
    close(fd[0]);
    text[p] = '\0';
    printf("%s", text);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

代码实际上不起作用.正如@kaylum在评论中正确建议的那样,调用exit而不是_exit在子进程中使代码正常工作.

c exit

3
推荐指数
1
解决办法
142
查看次数

Getopt :: Long和anonymous子例程

我写了以下代码:

my $version = sub {
    print "$PROGNAME $VERSION - $AUTHOR\n";
    exit 0;
};

my $usage = sub {
    print "Usage: proll <options>\n";
    print "Available options:\n";
    print " -h, --help  Print this help and exit.\n";
    print " --version   Print version.\n";
    print " XdY     Launch X dice with Y faces.\n";
    exit 0;
};

my $ret = GetOptions ( "version" => \$version,
                       "h|help" => \$usage );
Run Code Online (Sandbox Code Playgroud)

但是如果我用脚本调用脚本--version或者--help它没有调用子程序.我哪里错了?

如果我按如下方式更改代码,它总是在没有任何命令行参数的情况下调用第一个子例程:

my $ret = GetOptions ( "version" => &$version,
                       "h|help" => …
Run Code Online (Sandbox Code Playgroud)

perl

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

a {0,1} | b {0,1}只匹配'a',为什么?

为什么会这样?我有一个复杂的正则表达式,但这就是让我发疯的原因.

a|b
Run Code Online (Sandbox Code Playgroud)

匹配单个a或单个b.

a+|b+
Run Code Online (Sandbox Code Playgroud)

匹配系列a或系列b.

a{1}|b{1}
Run Code Online (Sandbox Code Playgroud)

Matches both single letter the same.

But I need to do this:

a{0,2}|b{0,2}
Run Code Online (Sandbox Code Playgroud)

And this regexp matches only a and no b at all. What's wrong with that?

What is even funnier is that if I change the 0 to 1, so that it's {1,2}, it starts to match correctly (or better, as expected) again.

Since it seems it now quite clear, I'm adding …

regex perl

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