我在perl的闭包和$1regexp变量中发现了一个可能的错误.简单地说,它们不会混合在一起.
我们来看看这段代码.
use warnings;
while ("1234567890"=~/(.)/sg) {
push @subs, sub{print $1;};
}
for (@subs) {$_->()}
Run Code Online (Sandbox Code Playgroud)
您可以想象perl现在将打印所有数字 - 相反,我从undefined得到了10个警告$1.
它真的是一个错误,还是我错过了perl文档中的某些内容?是否有某些原因,为什么应该$1是未定义的而不是关闭的一部分?
我有一个scala中的代码,由于各种原因,几行代码无法同时被更多线程访问.
如何轻松使其线程安全?我知道我可以使用Actors模型,但我觉得它对于几行代码来说太过分了.
我会使用某种锁,但我无法在谷歌或StackOverflow上找到任何具体的例子.
我有时会被斯卡拉偶尔的句法魔法困惑.
我想,写作
array(5)
只是一个捷径
array.apply(5).(正如在Array的文档中所写的那样.)
但是,我可以很开心
array(5) = 3
但我不能这样做
array.apply(5) = 3.
到底是怎么回事?
我喜欢Python交互式解释器打印字符串的方式,我想在脚本中重复这一点.但是,我似乎无法做到这一点.
例.我可以在翻译中这样做:
>>> a="d\x04"
>>> a
'd\x04'
Run Code Online (Sandbox Code Playgroud)
但是,我无法在python本身中复制它
$ python -c 'a="d\x04";print a'
d
Run Code Online (Sandbox Code Playgroud)
我想要这个,因为我想调试一个包含大量具有类似非可打印字符的字符串的代码.
是否有捷径可寻?
我看过几个"CSS箭头"的例子 - 基本上是一个箭头/三角形,用纯CSS完成.这里的例子:
...等等.
但是,无论我对它们进行多少调查,我都不知道它是如何工作的,为什么会产生箭头.
以这个小例子为例,改编自第一个链接:
.arrow-up {
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 50px solid black;
}Run Code Online (Sandbox Code Playgroud)
<div class="arrow-up"></div>Run Code Online (Sandbox Code Playgroud)
为什么透明的左右边框会产生向上箭头?到底是怎么回事?
我在Perl中有一个问题,我不明白.我把它剥离到这个非常短的代码.
为什么Perl的map函数返回一个空数组?不应该返回9 undef秒的阵列吗?
sub mySub{
return;
}
my @arr = (1 .. 9);
my @arr2 = map( mySub($_), @arr );
print @arr . ' ' . @arr2, "\n";
Run Code Online (Sandbox Code Playgroud)
它打印"9 0".
它可能很简单,但perldoc没有帮助.
可能重复:
在Scala元组上使用'map'和东西?
为什么我不能迭代这个构造(我不知道如何调用它,因为Scala只是调用它(Int, Int, Int))?
val list = (1,2,3)
list.map{println _}
Run Code Online (Sandbox Code Playgroud)
上面的代码产生以下错误:
<console>:9:错误:值映射不是(Int,Int,Int)
(1,2,3).map {println _}的成员
我有一个iterable val pairs: Iterable[Pair[Key, Value]],它有一些key => value对.
现在,我想创建一个Map[Key, Iterable[Value]],每个键都有一个Iterable给定键的所有值pairs.(我实际上并不需要Seq,任何Iterable都可以).
我可以使用mutable Map和/或使用mutable 来做到这一点ListBuffer.
然而,每个人都告诉我,"正确"的scala没有使用可变集合.那么,是否可以仅使用不可变集合来执行此操作?(例如,使用map,foldLeft等等)
我想让我的Scala代码更具可读性,因此我为所有参数化类型添加了自定义类型.
所以我在包对象中,为简单起见,
type IntSeq = Seq[Int]
Run Code Online (Sandbox Code Playgroud)
但是,现在我不能apply在伴侣对象上做简单.来自REPL:
scala> IntSeq(1, 2, 3)
<console>:8: error: not found: value IntSeq
IntSeq(1, 2, 3)
^
Run Code Online (Sandbox Code Playgroud)
该怎么办?
(只是为了确保:我的实际别名对象比这更复杂Seq[Int])
编辑:有一个类似的问题 - Scala类型别名包括伴侣对象[初学者]
在这个问题上,有两个回复,两个都不起作用.
一个是使用apply定义我的自定义对象,但我不知道如何在我的情况下这样做,再加上它有点冗长.
另一个 - 写入val IntSeq = Seq会产生错误
警告:先前定义的特征Seq不是值IntSeq的伴侣.同伴必须一起定义; 您可能希望使用:粘贴模式.
我有一个像这样的 gRPC API 定义(来自 Akka 文档示例),但更长(4000 行只是一部分service)。
service GreeterService {
rpc SayHello (HelloRequest) returns (HelloReply) {}
rpc ItKeepsTalking (stream HelloRequest) returns (HelloReply) {}
rpc ItKeepsReplying (HelloRequest) returns (stream HelloReply) {}
rpc StreamHellos (stream HelloRequest) returns (stream HelloReply) {}
}
Run Code Online (Sandbox Code Playgroud)
但是,RPC 列表现在变得太长,我想以某种方式将其“分解”为多个文件,以便该文件更具可读性。像这样的东西
// file 1:
service GreeterServicePartA {
rpc SayHello (HelloRequest) returns (HelloReply) {}
rpc ItKeepsTalking (stream HelloRequest) returns (HelloReply) {}
}
// file 2:
service GreeterServicePartB {
rpc ItKeepsReplying (HelloRequest) returns (stream HelloReply) {}
rpc StreamHellos (stream HelloRequest) …Run Code Online (Sandbox Code Playgroud)