小编Tva*_*roh的帖子

如何在Kotlin中创建一个抽象类的匿名类实例?

假设这KeyAdapter是一个抽象类,有几个可以覆盖的方法.

在java中我可以做到:

KeyListener keyListener = new KeyAdapter() {
    @Override public void keyPressed(KeyEvent keyEvent) {
        // ...
    }
};
Run Code Online (Sandbox Code Playgroud)

如何在Kotlin做同样的事情?

java abstract-class kotlin

93
推荐指数
2
解决办法
3万
查看次数

如何在ReactJS中输出文本而不将其包装在span中

在我的基于ReactJS的应用程序中,我做了:

var _ = React.DOM;
_.span(null, 'some text', _.select(null, ...));
Run Code Online (Sandbox Code Playgroud)

问题是:'some text'包含在DOM中的其他span元素中.有没有办法避免这种行为,只输出原始文本?

要明确:我想输出

<span>some text<select>...</select></span>
Run Code Online (Sandbox Code Playgroud)

<span><span>some text</span><select>...</select></span>
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

43
推荐指数
1
解决办法
3万
查看次数

IntelliJ IDEA:将EOF符号发送到Java应用程序

从IntelliJ IDEA运行命令行Java应用程序时,是否可以将EOF符号发送到等待输入的程序?在控制台中,这可以使用ctrl-d组合完成,但在IDEA中它不起作用.

intellij-idea eof

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

如何在Scala中编程以与Dotty向前兼容

最近在Strange Loop的演讲中,Martin Odersky阐述了他对Scala未来版本Dotty的看法.我知道这是正在进行中的工作,由于许多可能的向后兼容性问题,它甚至可能不会流入Scala(至少不会非常快).但如果它发生了,我们今天如何在Scala中编程以与Dotty向前兼容?我没有从谈话中得到所有想法,所以我希望有更深刻的人总结这些变化,并描述我们如何为他们做好准备.

scala dotty

29
推荐指数
2
解决办法
3010
查看次数

将Akka Stream Source分成两部分

我有一个Akka Streams Source,我希望根据谓词分成两个来源.

例如有一个源(有意简化类型):

val source: Source[Either[Throwable, String], NotUsed] = ???
Run Code Online (Sandbox Code Playgroud)

还有两种方法:

def handleSuccess(source: Source[String, NotUsed]): Future[Unit] = ???
def handleFailure(source: Source[Throwable, NotUsed]): Future[Unit] = ???
Run Code Online (Sandbox Code Playgroud)

我希望能够将source根据_.isRight谓词拆分并将正确的部分传递给handleSuccess方法并将部分传递给handleFailure方法.

我尝试使用Broadcast分离器,但最后需要Sinks.

scala akka-stream

13
推荐指数
3
解决办法
5182
查看次数

sbt:在编译测试时设置特定的scalacOptions选项

通常我使用这组选项来编译Scala代码:

scalacOptions ++= Seq(
    "-deprecation",
    "-encoding", "UTF-8",
    "-feature",
    "-unchecked",
    "-language:higherKinds",
    "-language:implicitConversions",
    "-Xfatal-warnings",
    "-Xlint",
    "-Yinline-warnings",
    "-Yno-adapted-args",
    "-Ywarn-dead-code",
    "-Ywarn-numeric-widen",
    "-Ywarn-value-discard",
    "-Xfuture",
    "-Ywarn-unused-import"
)
Run Code Online (Sandbox Code Playgroud)

但他们中的一些不ScalaTest玩好,所以我想禁用-Ywarn-dead-code-Ywarn-value-discard编译测试时.

我尝试添加这样的范围

scalacOptions in Compile ++= Seq(...)
Run Code Online (Sandbox Code Playgroud)

要么

scalacOptions in (Compile, compile) ++= Seq(...)
Run Code Online (Sandbox Code Playgroud)

甚至

val ignoredInTestScalacOptions = Set(
    "-Ywarn-dead-code",
    "-Ywarn-value-discard"
)

scalacOptions in Test ~= { defaultOptions =>
  defaultOptions filterNot ignoredInTestScalacOptions
}
Run Code Online (Sandbox Code Playgroud)

但前两个禁用正常编译范围的选项,而后者不影响测试编译选项.

编译测试时如何才能有单独的选项列表?

scala sbt

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

如何展平一系列猫的ValidatedNel值

我需要将一系列cats.data.ValidatedNel[E, T]值展平为单个ValidatedNel值:

val results: Seq[cats.data.ValidatedNel[E, T]] = ???

val flattenedResult: cats.data.ValidatedNel[E, T]
Run Code Online (Sandbox Code Playgroud)

我可以这样做:

import cats.std.list._, cats.syntax.cartesian._

results.reduce(_ |@| _ map { case _ => validatedValue })
Run Code Online (Sandbox Code Playgroud)

但是想知道是否存在预定义的库方法.

scala scala-cats

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

在akka-stream中如何从期货集合中创建无序的来源

我需要akka.stream.scaladsl.Source[T, Unit]从一个集合中创建一个Future[T].

例如,有一组期货返回整数,

val f1: Future[Int] = ???
val f2: Future[Int] = ???
val fN: Future[Int] = ???
val futures = List(f1, f2, fN)
Run Code Online (Sandbox Code Playgroud)

如何创建一个

val source: Source[Int, Unit] = ???
Run Code Online (Sandbox Code Playgroud)

从中.

我不能使用Future.sequence组合器,从那以后我会等待每个未来完成之后从源头获取任何东西.我想在任何未来完成后立即以任何顺序获得结果.

我知道这Source是一个纯粹的功能API,它不应该以某种方式实现它之前运行任何东西.所以,我的想法是使用Iterator(懒惰)来创建一个源:

Source { () =>
  new Iterator[Future[Int]] {
    override def hasNext: Boolean = ???
    override def next(): Future[Int] = ???
  }
}
Run Code Online (Sandbox Code Playgroud)

但这将是未来的来源,而不是实际价值.我也可以阻止next使用,Await.result(future)但我不确定哪个胎面池的线程将被阻止.这也将顺序调用期货,而我需要并行执行.

更新2:事实证明有一种更简单的方法(感谢Viktor Klang):

Source(futures).mapAsync(1)(identity)
Run Code Online (Sandbox Code Playgroud)

更新:这是基于@sschaef回答我得到的:

def futuresToSource[T](futures: …
Run Code Online (Sandbox Code Playgroud)

scala future reactive-streams akka-stream

9
推荐指数
2
解决办法
3012
查看次数

区分app http调用$ http和Angular对拦截器中静态资源的请求

使用AngularJS拦截器,是否可以将我的应用程序调用区分为$ http(直接通过$ resource)与Angular本身针对静态资源(如视图)发出的请求,而不检查URL?

我在HTTP拦截器中添加自定义授权标头,如下所示:

transparentAuthServices.factory('authHttpInterceptor',
  function (localSessionStorage) {
    return {
      'request': function (config) {
        if (!config.ignoreAuthInterceptor && localSessionStorage.hasSession()) {
          var sessionId = localSessionStorage.getSession().sessionId;
          config.headers['Authorization'] = 'ARTAuth sessionId="' + sessionId + '"';
          return config;
        } else {
          return config;
        }
      }
    }
  };
});
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我不需要授权静态资源,我的服务器不检查它们.我可以查看网址并跳过那些以'/ app'开头的(在我的情况下),但我想知道是否有一个优雅的解决方案?

javascript interceptor angularjs

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

从服务器关闭akka-http websocket连接

在我的场景中,客户端发送"再见"websocket消息,我需要在服务器端关闭先前建立的连接.

来自akka-http 文档:

通过从服务器逻辑中取消传入连接流(例如,将其下游连接到Sink.cancelled,将其上游连接到Source.empty),可以关闭连接.也可以通过取消IncomingConnection源连接来关闭服务器的套接字.

但是我不清楚如何考虑到这一点SinkSource在协商新连接时设置一次:

(get & path("ws")) {
  optionalHeaderValueByType[UpgradeToWebsocket]() {
    case Some(upgrade) ?
      val connectionId = UUID()
      complete(upgrade.handleMessagesWithSinkSource(sink, source))
    case None ?
      reject(ExpectedWebsocketRequestRejection)
  }
}
Run Code Online (Sandbox Code Playgroud)

scala akka-stream akka-http

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