Java 8引入CompletableFuture
了一个可组合的Future的新实现(包括一堆thenXxx方法).我想独占使用它,但我想使用的许多库只返回不可组合的Future
实例.
有没有办法将返回的Future
实例包装在一个内部,CompleteableFuture
以便我可以编写它?
我正在通过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")
命中apply
在MapLike.scala
.但这只返回值,而不是可以更新的值.
出于好奇,我在不可变的地图上尝试了相同的语法,并出现以下错误,
scala> val immutableScores = Map("Alice" -> 10, "Bob" -> 3, "Cindy" …
Run Code Online (Sandbox Code Playgroud) 我有一个REST端点接受POST请求以将代码标记为已兑换.代码只能在特定日期之间兑换.
如果有人试图提前兑换代码,我应该如何回应?
我怀疑HTTP 403,故宫,是正确的选择,但随后的W3C规定" 的要求不应该被重复 ",而在这种情况下,我会期待被反复要求,只是在以后的日子.
是否可以从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,然后开始一个新的,我很想避免重复它.
我最近花了太多时间尝试调试 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
.
我一直在通过在各种缓冲区中重复eval
ing 来测试这一点(re-search-backward "\\(\\sw\\|\\s_\\|\\s\\.\\|\\s\\\\|[#@|]\\)\\=")
。对于所有示例,该点从行尾开始并向后移动,直到搜索失败。
fs.ch
,点结束于c
.fs.ch
,点结束于f
.fs.ch …
我有两个函数,每个函数都返回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>
?
编辑:注意,能够使期货短线是我想要的功能。我知道我要依次运行计算,但是没关系。我不希望运行doB
时doA
返回true。
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)