为什么是例外
import akka.actor.ActorSystem
import akka.stream.ActorMaterializer
import akka.stream.scaladsl.Source
object TestExceptionHandling {
def main(args: Array[String]): Unit = {
implicit val actorSystem = ActorSystem()
implicit val materializer = ActorMaterializer()(defaultActorSystem)
Source(List(1, 2, 3)).map { i =>
if (i == 2) {
throw new RuntimeException("Please, don't swallow me!")
} else {
i
}
}.runForeach { i =>
println(s"Received $i")
}
}
}
Run Code Online (Sandbox Code Playgroud)
默默地忽略了?我可以看到流在打印后停止Received 1,但没有记录任何内容.请注意,问题通常不是日志记录配置,因为如果我akka.log-config-on-start = on在application.conf文件中设置,我会看到很多输出.
在 vim(和 vi)中,如果我处于命令模式并且我键入[[它似乎会转到文件的开头,如果我键入]]它似乎会转到文件的末尾。但我认为gg和G是文件命令的开始/结束,那么[[和是]]在做一些不同的事情吗?
我的猜测是,[[并将]]转到下一个实例,但我不知道是什么。
我有2个可以为空的DateTimes,因此减去它们将导致可以为空的TimeSpan.我想打电话.Value来.

但是,自动完成下拉列表认为括号内的类型是正常的TimeSpan..Value不在列表中,当我使用任何建议时,它不会编译.它在我手动输入时编译.Value.
如果只有一个DateTimes可以为空,则会出现同样的问题.如果我将a添加TimeSpan?到DateTime?结果中,也会发生这种情况DateTime?.Intellisense认为它是一个DateTime.
这是Visual Studio智能感知的问题吗?我在更新3,我没有ReSharper.另一台电脑上的问题相同.
编辑:要清楚,我问一个关于为什么intellisense建议错误类型的问题.我知道要编写什么来编译代码.
我有2个数据结构:Dictionary<string, string>和Multimap<string, string>.Multimap实际上只是一个字典.我从这个问题中得到了必须的代码.这是类定义:
public class Multimap<TKey, TValue> : Dictionary<TKey, HashSet<TValue>>
{ ... }
Run Code Online (Sandbox Code Playgroud)
两种数据结构都有一种.Add(TKey key, TValue value)方法.
我有一个类负责从某些文件填充这些映射.我目前有以下两种方法:
public Dictionary<string, string> PopulateDictionary(...)
{
Dictionary<string, string> returnDictionary = new Dictionary<string, string>();
...
foreach (...)
{
...
returnDictionary.Add(key, value);
}
return returnDictionary;
}
public Multimap<string, string> PopulateMultimap(...)
{
Multimap<string, string> returnMultimap = new Multimap<string, string>();
...
foreach (...)
{
...
returnMultimap.Add(key, value);
}
return returnMultimap;
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,它们完全相同,都长约25行,唯一的区别是它们的返回类型.我想要做的是将其浓缩为一种方法.我的第一次尝试是采用这种方法
public Dictionary<string, object> PopulateGenericDictionary(...)
{ ... } …Run Code Online (Sandbox Code Playgroud) 我有一个非常大的csv文件,其中每个字段的宽度相同(因此每行的宽度相同).我需要找到特定列中的差异.
当我在vimdiff中打开2个文件时,大多数行被标记为差异,因为有一个定期更改的日期时间字段(例如,列10-15).对于差异,此字段的颜色正确为红色.但是我很感兴趣,比如专栏50-60,其中整个文件中只会有一些差异.
到目前为止,我唯一的解决方案是删除我不关心的文件部分,:%s/^.\{49}但这是非常滞后的,因为文件太大了.
有没有更好的解决方案而无需修改文件?
val i = (1 to 8).toIterator
val oneToThree = i.takeWhile(_ <= 3).toList
// List(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.现在我希望迭代器仍然包含(3, 4, 5, 6, 7, 8),但如果我继续:
val fourToSix = i.takeWhile(_ <= 6).toList
// List(5, 6)
Run Code Online (Sandbox Code Playgroud)
元素3失踪了.我将优选喜欢fourToSix要List(4, 5, 6).我该如何使用takeWhile或进行类似的操作以使其有效?
c# ×2
scala ×2
vim ×2
akka-stream ×1
casting ×1
dictionary ×1
diff ×1
generics ×1
intellisense ×1
iterator ×1
vi ×1
vimdiff ×1