问题标签 [scalar-context]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - 空列表可以在标量上下文中吗?
有一个谎言,标量上下文中的列表产生列表的最后一个元素。这是一个谎言,因为(俗话说)你不能在标量上下文中拥有一个列表。在标量上下文中看起来像列表的东西实际上是标量上下文中的逗号运算符,它在标量上下文中具有不同的行为。
但是,这个逻辑似乎有一个漏洞:空列表(有时称为空列表)。字符()
被定义为空列表perldoc perlglossary
。构造
是有效代码并undef
返回$s
. 这似乎没有记录在任何地方perldoc
(我没有检查过骆驼),但是很多代码都依赖它,所以我认为它会继续存在。
既然序言已经完成,那么问题来了:如果我们不能在标量上下文中拥有一个列表,那么我们在标量上下文中如何称呼空列表以及不将其称为列表的原因是什么(因为没有逗号在标量上下文中)?
如果你喜欢这个问题,你可能也会喜欢P5P 中正在进行的讨论。
perl - 在标量上下文中是否存在列表之类的东西?
这是因为perldoc perlfaq4
将上面的行解释如下(添加了重点):
由于您要分配给标量,因此右侧位于标量上下文中。标量上下文中的逗号运算符(是的,它是一个运算符!)计算其左侧,丢弃结果,并计算其右侧并返回结果。实际上,该 列表相似分配给
$scalar
它最右边的值。许多人把这搞砸了,因为他们选择了一个类似列表的列表,其最后一个元素也是他们期望的计数:
我理解这意味着在标量上下文中没有列表这样的东西。
但是,ikegami坚持认为它“导致 [s] 为列表运算符,因此它是列表文字”。
那么,它是不是一个列表?
entity-framework - 如何更新 EF 中的导航属性/相关表?
我有一个Customer
带有导航属性的对象Days
(天是一个单独的表,它有 - day_id,customer_id - FK)。
这仅更新了客户的标量属性,而不是天数。有什么聪明的方法可以更新 Days 吗?(无需在几天内手动迭代..)?如果没有 - 是否有更新第二张表(天)的最佳做法?如果可能,请编写应使用的显式代码。
ps 我目前正在使用 EF 4.0
perl - 连接多维数组中的字符串会覆盖 Perl 中的目标字符串
我用字符串值构建了一个二维数组。总是有 12 列,但行数会有所不同。现在我想为每一行构建一个字符串,但是当我运行以下代码时:
$outstring
取第一个值。然后在第二个内部循环和后续循环中的值$outstring
被覆盖。例如,第一个值是"DATE"
下一次该值"ABC"
被提供给它的时间。而不是希望"DATEABC"
它的"ABCE"
。是的"E"
第四个字符DATE
。我想我错过了标量/列表问题,但我试过谁知道有多少变化无济于事。当我第一次开始时,我直接从@DATATABLE
. 同样的问题。只会更快。
arrays - Perl 中的二维数组访问
我有一个充满城市的数组。我想通过引用子例程来传递数组并打印每个城市以输出。但是,我有以下问题:
我可以在子例程中的while循环之前访问每个元素。但我无法访问我的while循环中的元素。我收到错误消息:
... 在第 44 行,第 997 行 (#1) 在打印中使用未初始化的值 在第 44 行,第 998 行 (#1) 在打印中使用未初始化的值 ...
以下是一些代码。我已经评论了打印的内容和不打印的内容(我试图删除我的解释不需要的代码......):
- Perl 语法让我非常困惑。我不明白@{$_[1]}[0] 发生了什么。我正在努力解决它。
- $_[1],将此位置的值视为标量值(数组的内存地址)
- @{...},将此内存地址中存储的内容解释为数组
- @{...} [x],访问索引 x 处的元素
我在正确的轨道上吗?
arrays - 需要帮助让 perl 数组脱离标量上下文
我有一个 perl 数组,需要按以下方式存储:
然后我需要稍后检索内容:
这产生:
(数组中的项目数)。
如何摆脱标量上下文并将 $self->{spec}->{allImages} 作为列表返回?
perl - Perl “反向逗号运算符”(示例来自 Programming Perl,第 4 版)
我正在阅读“ Programming Perl ”并遇到了一个似乎没有意义的奇怪示例。这本书描述了 Perl 中的逗号运算符在标量上下文中使用时如何只返回最后一个结果。
例子:
这本书在几页后给出了这个“反逗号运算符”的例子(第 82 页)
但是对我来说,这似乎根本没有逆转..?
例子:
这与正常的逗号运算符有何不同?结果是一样的,没有反转!
这是指向确切页面的链接。该示例位于底部附近。
perl - 在变量上成功使用 grep 后,它打印空白
我正在打开一个目录,其中包含如下所示的文件。这是一个文件:
这是第二个文件:
这是我的代码:
没有为 $line 打印任何内容,但此代码正确计算了打开文件时出现在文件中的“>”的数量,打印 $numberoffastas 就是证明。
如何修复此代码,以便 $line = 类似于:
或者
谢谢
perl - 标量上下文中的 Perl ARGV 值
给定以下 Perl 脚本:
这是输出:
我对 的输出感到困惑print "$ARGV\n"
。如果我尝试这样做print "$ARGV[-1]\n"
,则会将空行打印到 STDOUT。如果我直接引用$ARG[2]
,我也会得到一个空行。
为什么使用file4
时要打印脚本$ARGV
?
作为一个反例,我尝试print "$d\n"
了 ,期望得到file4
. 我得到了一个空行,而不是预期的输出。如何$ARGV
工作?
perl - Perl 中如何通过列表分配进行字数统计?
我无法完全理解以下代码段的工作原理:
我知道这会$str =~ /\w+/g
返回一个单词列表,显然,这些单词被传达给最左边的作业。然后$num
在该列表上施加一个标量上下文并变为 3。
但这是什么() = ('abc', 'def', 'ghi')
意思?是这样的my $a = my @b = (3, 5, 8)
吗?如果是这样,最右边的列表如何转移到$num
最左边?