我读过By Tom Christiansen,Brian d foy,Larry Wall,Jon Orwant的"Programming Perl".有以下文字我无法理解(我不明白的确切地方标有粗体):
您真正想知道的是哪些运营商为其操作数提供了哪些上下文.实际上,您可以轻松地告诉哪些供应列表上下文,因为它们的语法描述中都有LIST.其他一切都提供标量背景.一般来说,它非常直观.如有必要,可以使用 伪函数强制标量上下文到LIST中间的参数
scalar.Perl没有办法在上下文中强制列表上下文,因为在任何你想要列表上下文的地方它已经由某个控制函数的LIST提供了.
为方便起见,我想提出以下问题:
片段中的LIST是什么意思?
什么是句法描述?(似乎是某种文档)
下一个文字是什么意思:
你可以强制标量上下文到LIST中间的参数
将有人请解释下一个:
在"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"中的定义应该被认为是错误的,因为运算符不会影响变量,而是变量中的值(至少在那个例子中).是对的吗?
提前欣赏.
在"Programming Perl"一书中有一个片段(cutted):
默认情况下,当(EXPR)被视为隐式智能匹配时
$_;,$_ ~~ EXPR.但是,如果when的EXPR参数是下面列出的10种异常形式之一,则直接计算布尔结果,并且不会发生智能匹配:
...
正则表达式匹配形式为/ 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"一书中相当复杂的片段.在这里(对我来说,标记为粗体的是什么模糊):
模式被解析为双引号字符串,所有正常的双引号约定都可以使用,包括变量插值(除非您使用单引号作为分隔符)和使用反斜杠转义符表示的特殊字符.这些是在将字符串解释为正则表达式之前应用的(这是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.
当我写作并重新阅读我的问题时,我认为这个片段讲述了使用单引号作为正则表达式分隔符,然后它们似乎都非常有凝聚力.我的假设是否正确?
我的赞赏.
基本上我有一个"删除所选项"按钮,只要没有选中复选框就会被禁用.一旦用户选中了复选框,我就想将click事件处理程序绑定到此按钮.
由于用户可能会取消选中复选框并且没有选中,我想将完整的事件处理函数存储在变量中,并且只在选中复选框时将其绑定.
问题是:如何将此事件处理函数存储在变量中以最容易地将其绑定到对象?
直到现在我只使用它来取消绑定事件处理程序(已存在于此对象上),然后再次绑定它,如下所示:
$(my-selector).unbind('click', eventHandler);
$(my-selector).bind('click', eventHandler);
Run Code Online (Sandbox Code Playgroud)
......但从来没有反过来.
我正在使用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值
最近我遇到了这篇关于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) 我想知道如何嵌入我的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放入标签中,以便它实际进入标签内.
我试图尽可能清楚地说明这一点.谢谢
有没有人可以解释为什么下一个脚本不起作用?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 ×5
javascript ×3
jquery ×2
ajax ×1
boolean ×1
events ×1
html ×1
jquery-ui ×1
loops ×1
optimization ×1
perl-context ×1
regex ×1
signals ×1
tabs ×1
v8 ×1