小编the*_*eon的帖子

Scala中=>和()=>的含义是什么

我是Scala的新手,我非常喜欢它,但有时候让我感到惊讶.例如:

clickedCallbacks: List[() => Unit])
Run Code Online (Sandbox Code Playgroud)

谁能告诉我Scala中的含义=>() =>含义?

scala

81
推荐指数
5
解决办法
5万
查看次数

映射失败的未来的例外

什么是最干净的方式mapException的失败Future在Scala呢?

说我有:

import scala.concurrent._
import scala.concurrent.ExecutionContext.Implicits.global

val f = Future { 
  if(math.random < 0.5) 1 else throw new Exception("Oh no") 
}
Run Code Online (Sandbox Code Playgroud)

如果未来成功1,我想保留它,但是如果它失败了我想改变Exception到另一个Exception.

我能想出的最好的是变换,但是这需要我为成功案例制定一个不必要的功能:

val f2 = f.transform(s => s, cause => new Exception("Something went wrong", cause))
Run Code Online (Sandbox Code Playgroud)

有没有理由没有mapFailure(PartialFunction[Throwable,Throwable])

scala future akka scala-2.10

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

Mongodb避免重复输入

我是mongodb的新手.我可以知道如何避免重复输入.在关系表中,我们使用主键来避免它.我可以知道如何使用java在Mongodb中指定它吗?

java mongodb mongodb-java

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

在android上有没有像fiddler或wireshark这样的http代理?

我需要查看Android应用程序从我的设备调用的页面.有没有像Fiddler或Wireshark这样的应用程序看看背后发生了什么?

proxy android fiddler http-proxy

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

我如何处理返回的任何一个

如果是scala函数

def A(): Either[Exception, ArrayBuffer[Int]] = {
...
}
Run Code Online (Sandbox Code Playgroud)

什么应该是处理返回结果的正确方法? val a = A() 和?

scala either

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

Scala - 带有查询字符串解析器和生成器DSL的URL

在Scala中,如何以编程方式使用查询字符串参数构建URL?

另外,如何将String包含查询字符串参数的URL 解析为允许我以编程方式编辑查询字符串参数的结构?

url dsl parsing scala query-string

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

Akka演员询问和类型安全

我如何使用Akka Actor询问并保持类型安全?或者避免使用ask来支持tell?

当调用?ask在Akka Actor上时,Future[Any]返回a并且我必须通过显式转换future.mapTo[MyType].

我不喜欢失去这种类型的安全.如果我直接使用Futures(没有演员)我可以明确地返回Future[MyType]并保持类型安全.

我的具体用例涉及一个演员将其消息委托给两个子演员,然后汇总这些演员的结果并将其返回给父母的发件人.我父母的接收方法与Akka Docs中的这种方法类似:

http://doc.akka.io/docs/akka/2.0/scala/futures.html#For_Comprehensions

val f1 = actor1 ? msg
val f2 = actor2 ? msg

val f3 = for {
  a ? f1.mapTo[Int]
  b ? f2.mapTo[Int]
  c ? ask(actor3, (a + b)).mapTo[Int]
} yield c
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来实现我的用例?

asynchronous scala future actor akka

17
推荐指数
2
解决办法
3129
查看次数

为什么Function2没有andThen方法?

为什么andThen只存在Scala中的单个参数函数?

以下代码有效:

val double = (x: Int) => x * 2
val timesFour = double andThen double
Run Code Online (Sandbox Code Playgroud)

但为什么没有andThen多参数函数的方法呢?

val multiply = (x: Int, y: Int) => x * y
val multiplyAndDouble = multiply andThen double

<console>:10: error: value andThen is not a member of (Int, Int) => Int
Run Code Online (Sandbox Code Playgroud)

当然,添加这种方法是微不足道的.它是否有理由从标准库中省略?

编辑:

我刚刚注意到以下内容很容易解决:

val double = (x: Int) => x * 2
val timesFour = double andThen double
Run Code Online (Sandbox Code Playgroud)

但我仍然想知道为什么andThen没有andThen

scala function-composition

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

scala.collection.breakOut vs views

这个答案描述了如何scala.collection.breakOut用来防止创建浪费的中间集合.例如,这里我们创建一个中间件Seq[(String,String)]:

val m = List("A", "B", "C").map(x => x -> x).toMap
Run Code Online (Sandbox Code Playgroud)

通过使用breakOut我们可以阻止这个中间体的创建Seq:

val m: Map[String,String] = List("A", "B", "C").map(x => x -> x)(breakOut)
Run Code Online (Sandbox Code Playgroud)

视图解决了同样的问题,另外还有懒惰的访问元素:

val m = (List("A", "B", "C").view map (x => x -> x)).toMap
Run Code Online (Sandbox Code Playgroud)

我假设的创建View包装是相当便宜的,所以我的问题是:有没有使用任何真正的原因breakOutViewS'

scala scala-collections

14
推荐指数
3
解决办法
3655
查看次数

def或val用于在Scala中定义Function

我正在学习我大学的编程范例,并阅读讲师提供的这门课程材料:

val double = (x: Int) => 2 * x
double: Int => Int = <function1>
Run Code Online (Sandbox Code Playgroud)

但是从我自己的研究中我发现并习惯于定义相同的函数:

def d (x: Int) = 2 * x
d: (x: Int)Int
Run Code Online (Sandbox Code Playgroud)

我是Scala的新手.这两个定义都给出了以下结果:

res21: Int = 8
Run Code Online (Sandbox Code Playgroud)

4作为参数传递时.现在我的主要问题是为什么讲师更喜欢val用来定义一个函数?我认为它更长,并不是真正必要的,除非使用val提供了一些我不知道的额外优势.除了我理解使用val使一些名称占位符所以稍后在程序中,我可能会错误地写val double = 5,功能将消失!在这个阶段,我非常确信我学会了一种更好的定义函数的方法,除非有人告诉我.

functional-programming scala function

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