小编use*_*860的帖子

请帮助我理解"Programming Perl"一书中的片段

我读过By Tom Christiansen,Brian d foy,Larry Wall,Jon Orwant的"Programming Perl".有以下文字我无法理解(我不明白的确切地方标有粗体):

您真正想知道的是哪些运营商为其操作数提供了哪些上下文.实际上,您可以轻松地告诉哪些供应列表上下文,因为它们的语法描述中都有LIST.其他一切都提供标量背景.一般来说,它非常直观.如有必要,可以使用 伪函数强制标量上下文到LIST中间的参数scalar.Perl没有办法在上下文中强制列表上下文,因为在任何你想要列表上下文的地方它已经由某个控制函数的LIST提供了.

为方便起见,我想提出以下问题:

  1. 片段中的LIST是什么意思?

  2. 什么是句法描述?(似乎是某种文档)

  3. 下一个文字是什么意思:

你可以强制标量上下文到LIST中间的参数

perl perl-context

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

perl表达式中有任何副作用$ a = $ a ++;

将有人请解释下一个:

在"Programming Perl"一书中,postfix autoincrement operator被描述为

放置之后,它们($a--,$a++)在返回值后递增或递减变量.

因此,据我所知,$a++从未在虚空环境中使用,因为有人说过

他们增加或减少变量

但在下一个示例中,变量的值永远不会改变:

my $a = 3;
$a = $a++;
say $a; #always outputs 3
Run Code Online (Sandbox Code Playgroud)

所以我的假设是,当将值分配给同一个变量时,没有理由使用后自动递增,但是"编程Perl"中的定义应该被认为是错误的,因为运算符不会影响变量,而是变量中的值(至少在那个例子中).是对的吗?

提前欣赏.

perl auto-increment

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

"Perl编程"中的"直接评估布尔结果,没有智能匹配"是什么意思?

在"Programming Perl"一书中有一个片段(cutted):

默认情况下,当(EXPR)被视为隐式智能匹配时$_;,$_ ~~ EXPR.但是,如果when的EXPR参数是下面列出的10种异常形式之一,则直接计算布尔结果,并且不会发生智能匹配:

  1. ...

  2. 正则表达式匹配形式为/ REGEX /,$ foo =〜/ REGEX /或$ foo = ~EXPR.

这是什么意思evaluated directly for a Boolean result

例:

#!/usr/bin/perl
use v5.14;
my @a = ('aaa', 'bbb', 'ccc');

given(@a) {
    when (/a/) { say '@a contains an a'; }
    default    { say '@a does not contain an a' }
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,输出会不时变化:

@a does not contain an a

@a contains an a

@a does not contain an a

@a does not …
Run Code Online (Sandbox Code Playgroud)

perl boolean

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

在"Programming Perl"中,"你无法隐藏正则表达式结构中模式的终止分隔符"是什么意思?

抱歉,我再次需要帮助来理解"编程Perl"一书中相当复杂的片段.在这里(对我来说,标记为粗体的是什么模糊):

模式被解析为双引号字符串,所有正常的双引号约定都可以使用,包括变量插值(除非您使用单引号作为分隔符)和使用反斜杠转义符表示的特殊字符.这些是在将字符串解释为正则表达式之前应用的(这是Perl语言中少数几个字符串经过多次处理的地方之一)....

这种双遍解析的另一个结果是普通的Perl tokener首先找到正则表达式的结尾,就好像它正在寻找普通字符串的终止分隔符一样.只有在找到字符串的结尾(并完成任何变​​量插值)之后,才将模式视为正则表达式.除此之外,这意味着你不能"隐藏"正则表达式构造中的模式的终止分隔符(例如括号中的字符类或正则表达式注释,我们尚未涉及).Perl将在任何地方看到分隔符并在该点终止模式.

首先,为什么说它Only after it has found the end of the string不像the end of the regular expression以前所说的那样?

第二,这是什么意思you can’t “hide” the terminating delimiter of a pattern inside a regex construct?为什么我无法隐藏终止分隔符/,而我可以将它放在regexp中直接/A\/C/或插入变量中的任何位置(即使没有\):

my $s = 'A/';
my $p = 'A/C';
say $p =~ /$s/;
Run Code Online (Sandbox Code Playgroud)

输出1.

当我写作并重新阅读我的问题时,我认为这个片段讲述了使用单引号作为正则表达式分隔符,然后它们似乎都非常有凝聚力.我的假设是否正确?

我的赞赏.

regex perl

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

jQuery - 如何在变量中存储事件处理程序并在以后将其绑定到对象?

基本上我有一个"删除所选项"按钮,只要没有选中复选框就会被禁用.一旦用户选中了复选框,我就想将click事件处理程序绑定到此按钮.

由于用户可能会取消选中复选框并且没有选中,我想将完整的事件处理函数存储在变量中,并且只在选中复选框时将其绑定.

问题是:如何将此事件处理函数存储在变量中以最容易地将其绑定到对象?

直到现在我只使用它来取消绑定事件处理程序(已存在于此对象上),然后再次绑定它,如下所示:

$(my-selector).unbind('click', eventHandler);
$(my-selector).bind('click', eventHandler);
Run Code Online (Sandbox Code Playgroud)

......但从来没有反过来.

javascript jquery events event-handling javascript-events

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

Jquery ajax请求无法将数据返回给其他函数

我正在使用jquery做一个简单的ajax请求.下面是我的ajax功能.

     var makeJqueryAjaxRequest = function(arrParam) {
         var request = $.ajax({
             url : arrParam['url'],
             async: false,
             type: arrParam['type'],
             data: arrParam['data'],
             dataType: arrParam['data_type'],
             success: function(data) {
                 if(data){ 
                 return data;   
                 }
             }
         });
     }
Run Code Online (Sandbox Code Playgroud)

这是我的函数调用:

      var items = {
       "type" : 'POST',
       "url" : ajaxGetUrl,
       "data" : arrParam['data'],
       "data_type" : 'html'
      };
      var msg = makeJqueryAjaxRequest(items);
Run Code Online (Sandbox Code Playgroud)

现在不知道为什么我的makeJqueryAjaxRequest函数总是返回null值.如果我成功提醒数据:我的数据是完美的.但是当我尝试返回时,它会给我null值

javascript ajax jquery

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

如果某个函数没有优化,是否意味着声明它的所有函数都没有优化?

最近我遇到了这篇关于V8引擎优化JavaScript程序的优化杀手.但这篇文章对我来说并不完全清楚,所以我想问一下这个问题.

文章指出:

优化编译器编译的代码可以很容易地比通用编译器生成的代码快100倍......重要的是要注意导致优化救助的模式会影响整个包含函数.

这是否意味着,例如,如果一些大块代码,假设一个JavaScript库,它以IIFE(立即调用函数表达式)的形式包含一个包含try {} catch(e) {}在另一个函数声明中的语句,那么整个库未优化?

看起来是这样,因为我试图运行这个命令$ node --trace_opt --trace_deopt --allow-natives-syntax try_catch.js,try_catch.js如下:

//Function that contains the pattern to be inspected (using with statement)
function optimizeWhack() {
    foo();
    function foo() {
        try {} catch(e) {}
    }
    return 12
}

function printStatus(fn) {
    switch(%GetOptimizationStatus(fn)) {
        case 1: console.log("Function is optimized"); break;
        case 2: console.log("Function is not optimized"); break;
        case 3: console.log("Function is always optimized"); break;
        case 4: console.log("Function is never optimized"); break;
        case 6: console.log("Function …
Run Code Online (Sandbox Code Playgroud)

javascript optimization v8

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

Jquery UI在一个选项卡面板中选中div

我想知道如何嵌入我的div标签,我想要在jquery选项卡的选项卡中:我有这个代码:

<div id="tabs">
    <ul>
        <li><a href="#tabs-1">Nunc tincidunt</a></li>
        <li><a href="#tabs-2">Proin dolor</a></li>
        <li><a href="#tabs-3">Aenean lacinia</a></li>
    </ul>

    <div id ="tabs-1">
        <div id=panel>
            <br>
            <form action="xx.php" method="post" name="post">
                 <textarea
                 </textarea>
                 <br>
                 <input type="submit" name="submit" value="Post "/>
             </form>
        </div>
        <p class="slide">
             <a href="#" class="btn-slide">Post</a>
        </p>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

但是,这并没有将div(id = panel)正确地嵌入div选项卡-1中,而是刚出现在选项卡的底部,而不是正确地位于其中,但是当我点击另一个选项卡时仍然会消失.

我附上了一张展示我问题的图片,如果里面的内容无关紧要,我会道歉.

请单击此链接查看问题:http://i.stack.imgur.com/ZImwI.png.

正如您所看到的,它不在选项卡内部,但是当您单击另一个选项卡时仍然会消失.

我必须做些什么才能真正将我不会改变的div放入标签中,以便它实际进入标签内.

我试图尽可能清楚地说明这一点.谢谢

html tabs jquery-ui jquery-ui-tabs

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

为什么不能从Perl中的信号处理程序终止循环?

有没有人可以解释为什么下一个脚本不起作用?Label not found for "last SOME_BLOCK"错误的原因是什么?

#!/usr/bin/perl
use v5.14;
SOME_BLOCK: {
    alarm 1;
    $SIG{ALRM} = sub {
        last SOME_BLOCK;
    };
    my $count = 0;
    while (1) {
        $count += 1;
        say $count;
    }
};
Run Code Online (Sandbox Code Playgroud)

perl loops signals

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