在对SIP-13的评论中,Martin Odersky暗示可以使用多个参数创建隐式方法.根据我的经验,隐式方法总是只有一个参数,我无法想象如何使用具有多个参数的隐式方法.有人可以提供一些用例和解释吗?
我正和朋友讨论关闭,他认为(partial + 5)是关闭.但我认为闭包是一个关闭自由变量的函数
(let [a 10]
(defn func1 [x] (+ x a))
)
Run Code Online (Sandbox Code Playgroud)
然后func1是一个关闭.但在这种情况下5不是自由变量.那么哪个是正确的答案?
def foo(num:Int, str:String):Int = 1
val bar = foo(3, _) // compiler complains "missing parameter type for expanded function ((x$1) => test(3, x$1))"
val baz = foo(3, _:String) // compiles fine
Run Code Online (Sandbox Code Playgroud)
为什么我必须在从上下文看起来可以推断时明确指定_的类型?
编辑:根据David Soergel的建议重命名以避免名称冲突.
我已经读到使用Akka时的一个重要规则是避免任何阻塞输入/输出操作,轮询,忙等待,睡眠等等.但是,如果我真的需要一些流量控制呢?
我正在使用Akka演员向我们的客户发送邮件,并且对邮件服务器友好,每5秒发送一封邮件.我的计划是使用调度程序actor执行流控制,使用发送方actor执行邮件发送工作.
class Dispatcher extends Actor {
def receive = {
case ResetPassword(to, data) =>
senderActor ! Mail("resetPassword", to, data)
Thread.sleep(5000)
...
}
}
class Sender extends Actor {
def receive = {
case Mail(to, data) => // send the mail immediately
...
}
}
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?如果没有,我该如何进行流量控制?