小编Tom*_*Tom的帖子

为什么Akka Streams吞噬了我的异常?

为什么是例外

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 = onapplication.conf文件中设置,我会看到很多输出.

scala exception-handling akka-stream

18
推荐指数
2
解决办法
5963
查看次数

[[ 和 ]] 在 vi​​m 中做什么?

在 vim(和 vi)中,如果我处于命令模式并且我键入[[它似乎会转到文件的开头,如果我键入]]它似乎会转到文件的末尾。但我认为ggG是文件命令的开始/结束,那么[[和是]]在做一些不同的事情吗?

我的猜测是,[[并将]]转到下一个实例,但我不知道是什么。

vi vim

7
推荐指数
3
解决办法
4179
查看次数

Visual Studio 2012无法识别可空类型

我有2个可以为空的DateTimes,因此减去它们将导致可以为空的TimeSpan.我想打电话.Value来.

但是,自动完成下拉列表认为括号内的类型是正常的TimeSpan..Value不在列表中,当我使用任何建议时,它不会编译.它在我手动输入时编译.Value.

如果只有一个DateTimes可以为空,则会出现同样的问题.如果我将a添加TimeSpan?DateTime?结果中,也会发生这种情况DateTime?.Intellisense认为它是一个DateTime.

这是Visual Studio智能感知的问题吗?我在更新3,我没有ReSharper.另一台电脑上的问题相同.

编辑:要清楚,我问一个关于为什么intellisense建议错误类型的问题.我知道要编写什么来编译代码.

c# intellisense visual-studio-2012

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

是否可以创建一个返回两种可能类型之一的方法?

我有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)

c# generics dictionary casting

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

使用vimdiff查找特定列中的差异

我有一个非常大的csv文件,其中每个字段的宽度相同(因此每行的宽度相同).我需要找到特定列中的差异.

当我在vimdiff中打开2个文件时,大多数行被标记为差异,因为有一个定期更改的日期时间字段(例如,列10-15).对于差异,此字段的颜色正确为红色.但是我很感兴趣,比如专栏50-60,其中整个文件中只会有一些差异.

到目前为止,我唯一的解决方案是删除我不关心的文件部分,:%s/^.\{49}但这是非常滞后的,因为文件太大了.

有没有更好的解决方案而无需修改文件?

vim diff vimdiff

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

Scala Iterator.takeWhile正在删除失败的元素

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失踪了.我将优选喜欢fourToSixList(4, 5, 6).我该如何使用takeWhile或进行类似的操作以使其有效?

iterator scala

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