小编Dan*_*ood的帖子

将Java Future转换为CompletableFuture

Java 8引入CompletableFuture了一个可组合的Future的新实现(包括一堆thenXxx方法).我想独占使用它,但我想使用的许多库只返回不可组合的Future实例.

有没有办法将返回的Future实例包装在一个内部,CompleteableFuture以便我可以编写它?

java future java-8

79
推荐指数
6
解决办法
3万
查看次数

Scala的可变Map更新[map(key)= newValue]语法如何工作?

我正在通过Cay Horstmann的Scala for the Impatient book,我遇到了这种更新可变地图的方式.

scala> val scores = scala.collection.mutable.Map("Alice" -> 10, "Bob" -> 3, "Cindy" -> 8)
scores: scala.collection.mutable.Map[String,Int] = Map(Bob -> 3, Alice -> 10, Cindy -> 8)

scala> scores("Alice") // retrieve the value of type Int
res2: Int = 10

scala> scores("Alice") = 5 // Update the Alice value to 5

scala> scores("Alice")
res4: Int = 5
Run Code Online (Sandbox Code Playgroud)

它看起来像scores("Alice")命中applyMapLike.scala.但这只返回值,而不是可以更新的值.

出于好奇,我在不可变的地图上尝试了相同的语法,并出现以下错误,

scala> val immutableScores = Map("Alice" -> 10, "Bob" -> 3, "Cindy" …
Run Code Online (Sandbox Code Playgroud)

scala scala-collections

20
推荐指数
1
解决办法
2万
查看次数

资源的HTTP状态代码尚不可用

我有一个REST端点接受POST请求以将代码标记为已兑换.代码只能在特定日期之间兑换.

如果有人试图提前兑换代码,我应该如何回应?

我怀疑HTTP 403,故宫,是正确的选择,但随后的W3C规定" 的要求不应该被重复 ",而在这种情况下,我会期待被反复要求,只是在以后的日子.

rest http

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

如何从Scala repl隐藏出来?

是否可以从repl中取消隐含隐含的内容?

说我做这样的事,

scala> import scala.math.BigInt._
import scala.math.BigInt._

scala> :implicits
/* 2 implicit members imported from scala.math.BigInt */
  /* 2 defined in scala.math.BigInt */
  implicit def int2bigInt(i: Int): scala.math.BigInt
  implicit def long2bigInt(l: Long): scala.math.BigInt
Run Code Online (Sandbox Code Playgroud)

然后决定这是一个很大的错误.如何从当前范围中删除这些含义?

我目前的技术是中止REPL,然后开始一个新的,我很想避免重复它.

scala

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

Emacs Lisp 和非确定性正则表达式

我最近花了太多时间尝试调试 Emacs 中的一些自动完成模式功能,这个功能似乎是不确定的,让我完全困惑。

 (re-search-backward "\\(\\sw\\|\\s_\\|\\s\\.\\|\\s\\\\|[#@|]\\)\\=")
Run Code Online (Sandbox Code Playgroud)

该命令在 while 循环中调用,从当前点向后搜索以找到应该自动完成的完整“单词”。供参考,实际代码

一些背景和我的调查

我一直在尝试为 Javascript 设置自动完成,使用 slime 连接到 Node.js 后端。

在连接到 Node.js 后端的 Slime REPL 中自动完成是完美的,

在此处输入图片说明

连接到 Slime 的 js2 模式缓冲区内的自动完成无法从 Slime 中查找完成。在此图像中,您可以看到它回退到缓冲区中已有的单词。

在此处输入图片说明

我已经将其追溯到 Slime 的 Slime -beginning-of-symbol函数。

假设我试图在需要的fs.ch地方完成并且fs已经在范围内,该点位于h角色之后。

在 slime repl 缓冲区中,开始函数将点一直向后移动,直到遇到空格并匹配fs.ch

在 js2 模式缓冲区中,开始函数仅将点移动到点字符并仅匹配ch.

重现问题

我一直在通过在各种缓冲区中重复evaling 来测试这一点(re-search-backward "\\(\\sw\\|\\s_\\|\\s\\.\\|\\s\\\\|[#@|]\\)\\=")。对于所有示例,该点从行尾开始并向后移动,直到搜索失败。

  • 在暂存缓冲区中fs.ch,点结束于c.
  • 在 Slime repl 中fs.ch,点结束于f.
  • 在 js2 模式缓冲区中,fs.ch …

regex emacs elisp

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

压平Java期货

我有两个函数,每个函数都返回CompletebleFuture<Boolean>实例,我希望or它们进入一个有序且可短路的未来。

public CompletableFuture<Boolean> doA();
public CompletableFuture<Boolean> doB();
Run Code Online (Sandbox Code Playgroud)

非未来代码(即仅返回布尔值)将是

return doA() || doB();
Run Code Online (Sandbox Code Playgroud)

当返回类型是CompletableFuture<CompletableFuture<Boolean>>实例时,使用期货我已经达到了这一点。

doA.thenApply(b -> {
  if (!b) {
    return doB();
  } else {
    return CompletableFuture.completedFuture(b);
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法使这个扁平化?或者,以任何方式可以使返回类型为CompletablyFuture<Boolean>

编辑:注意,能够使期货短线是我想要的功能。我知道我要依次运行计算,但是没关系。我希望运行doBdoA返回true。

java future java-8

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

在Rust中对字符串进行分区

Rust中是否有一种机制将字符串分区为等长元素列表(子字符串或元组/字符数组)?

我想取一个String "abcdefghijkl"并将其拆分成一个列表["ab", "cd", "ef", "gh" "ij" "kl"]

我不需要看到手动执行此操作的方法,我只想知道是否与Clojure并行partition:

user> (partition 2 "abcdefghijkl")
((\a \b) (\c \d) (\e \f) (\g \h) (\i \j) (\k \l))
Run Code Online (Sandbox Code Playgroud)

rust

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

标签 统计

future ×2

java ×2

java-8 ×2

scala ×2

elisp ×1

emacs ×1

http ×1

regex ×1

rest ×1

rust ×1

scala-collections ×1