小编oxb*_*kes的帖子

为什么这个电话隐含含糊不清?

sum方法的签名TraversableOnce如下:

def sum[B >: A](implicit num: Numeric[B]): B = foldLeft(num.zero)(num.plus)
Run Code Online (Sandbox Code Playgroud)

我可以这样使用它:

scala> (1 to 10).sum
res0: Int = 55
Run Code Online (Sandbox Code Playgroud)

在这种情况下,编译器会注入Numeric[B]自身,因此在范围内必须有这种类型的明确隐式值.如果我Predef.implicitly自己注射它,会发生这种情况:

scala> (1 to 10).sum(implicitly)
<console>:6: error: ambiguous implicit values:
 both method conforms in object Predef of type [A]<:<[A,A]
 and method stringCanBuildFrom in object Predef of type => scala.collection.generic.CanBuildFrom[String,Char,String]
 match expected type T
   (1 to 10).sum(implicitly)
                 ^
Run Code Online (Sandbox Code Playgroud)

为什么这个含糊不清?

我可以使模糊性消失

scala> (1 to 10).sum(implicitly[Numeric[Int]])
res2: Int = 55
Run Code Online (Sandbox Code Playgroud)

要么

scala> (1 to 10).sum[Int](implicitly)
res3: …
Run Code Online (Sandbox Code Playgroud)

scala implicit

11
推荐指数
1
解决办法
1794
查看次数

Scala可以在没有企业支持的情

我想知道如果Scala没有明确的企业支持,是否会获得应得的收益(我在想Sun/Oracle,但我想它可能是其他人,比如谷歌).

由于Sun最近决定不在JDK7中包含闭包,他们难道不能将他们的重量放在Scala那些希望拥有更具表现力的语言的Java替代品上吗?毕竟,在我看来,他们应该最关心的是JVM,而不是Java 本身.有人认为这可能吗?

java scala jvm-languages

10
推荐指数
3
解决办法
1533
查看次数

向演员发送不是演员的信息是不好的做法吗?

假设我有一些具有actor_类型属性的类Actor.我做的有问题吗?

def someMethod() = {
  actor_ ! "HELLO"
}
Run Code Online (Sandbox Code Playgroud)

或者应该始终从另一个演员发送消息; 例如

def someMethod() = {
  Actor.actor { actor_ ! "HELLO" }
}
Run Code Online (Sandbox Code Playgroud)

scala actor

10
推荐指数
1
解决办法
1476
查看次数

如果尝试写入不再存在的客户端,远程角色框架会做什么?

我有一个服务器,它使用远程actor框架与多个客户端进行通信.正如这个问题所提到的,我无法跟踪客户何时消失.因此,我的服务器仍在尝试向不存在的客户端发送消息.

  • 这是一个问题吗?(我没有看到任何异常被抛出 - 但我认为如果我的服务器是长寿的话会有内存问题)
  • 如何检测到邮件正在发送给不再收听的客户端?(如果我想实现某种连接清理)

scala remote-actors actor

10
推荐指数
1
解决办法
624
查看次数

如何在从文件加载之前将bean注入ApplicationContext?

我有一个FileSystemXmlApplicationContext,我希望XML中定义的bean将构造函数参数作为未在Spring中声明的bean

例如,我想这样做:

<bean class="some.MyClass">
    <constructor-arg ref="myBean" />
</bean>
Run Code Online (Sandbox Code Playgroud)

所以我可以想象这样做:

Object myBean = ...
context = new FileSystemXmlApplicationContext(xmlFile);
context.addBean("myBean", myBean); //add myBean before processing
context.refresh();
Run Code Online (Sandbox Code Playgroud)

除了没有这样的方法:-(有谁知道我怎么能做到这一点?

java spring

10
推荐指数
1
解决办法
5672
查看次数

Scala将类型参数传递给对象

在Scala v 2.7.7中

我有一个文件

class Something[T] extends Other

object Something extends OtherConstructor[Something]
Run Code Online (Sandbox Code Playgroud)

这会引发错误:

class Something
take type parameters object Something extends OtherConstructor [Something] {

但是,我不能这样做

object Something[T] extends OtherConstructor[Something[T]]
Run Code Online (Sandbox Code Playgroud)

它抛出一个错误:

错误:';' 预期,但'''发现.

是否可以将类型参数发送到对象?或者我应该改变并简单地使用Otherconstructor

scala object type-parameter

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

如何让scalaz IDEA实时模板用于符号方法?

scalaz中的许多方法都有符号unicode等价物,例如forever?(当然,我的方法是错误的,符号方法确实有ASCII等价物).

该项目包含一个IDEA 的实时模板XML文件,所以这些可以自动完成,我相信使用forever+TAB快捷方式(在上面的例子中).

我无法弄清楚如何将这个实时模板导入IDEA并实际使用它.我怎样才能做到这一点?

scala intellij-idea scalaz

10
推荐指数
1
解决办法
1479
查看次数

如何在重复之前进行Scala控制抽象?

我是Peter Pilgrim.我看过Martin Odersky在Scala中创建了一个控件抽象.但是我似乎还没有在IntelliJ IDEA 9中重复它.它是IDE吗?

package demo

class Control {

  def repeatLoop ( body: => Unit ) = new Until( body )

  class Until( body: => Unit ) {
    def until( cond: => Boolean ) {
      body;
      val value: Boolean = cond;
      println("value="+value)
      if ( value ) repeatLoop(body).until(cond)
      // if  (cond) until(cond)
    }
  }

  def doTest2(): Unit = {
    var y: Int = 1
    println("testing ... repeatUntil() control structure")
    repeatLoop {
      println("found y="+y)
      y = y + 1
    }
    { …
Run Code Online (Sandbox Code Playgroud)

controls abstraction scala repeat

10
推荐指数
4
解决办法
2845
查看次数

Scala函数式编程体操

我试图在尽可能少的代码和尽可能功能的情况下执行以下操作:

def restrict(floor : Option[Double], cap : Option[Double], amt : Double) : Double
Run Code Online (Sandbox Code Playgroud)

显然以下工作:

= (floor -> cap) match {
    case (None, None)       => amt
    case (Some(f), None)    => f max amt 
    case (None, Some(c))     => c min amt
    case (Some(f), Some(c)) => (f max amt) min c
  }
Run Code Online (Sandbox Code Playgroud)

我真的希望有更优雅的东西,并且会接受使用Scalaz库!您可以假设以下情况属实:

floor.forall( f => cap.forall( _ > f))
Run Code Online (Sandbox Code Playgroud)

如果有人有兴趣,这里有一些测试代码:

object Comparisons {
  sealed trait Cf {
    def restrict(floor: Option[Double], cap: Option[Double], amt: Double): Double
  }

  def …
Run Code Online (Sandbox Code Playgroud)

functional-programming scala scalaz

10
推荐指数
4
解决办法
2167
查看次数

在JDK6下编译的相互自引用类型参数但不是7?

以下代码使用JDK6编译(我试过1.6.0_24)

class XY<A extends XY<A, B>, B extends XY<B, A>> { } 
Run Code Online (Sandbox Code Playgroud)

但是在JDK7下编译(例如1.7.0),我得到了这个错误:

XY.java:1: error: type argument B is not within bounds of type-variable A
class XY<A extends XY<A, B>, B extends XY<B, A>> {
                                      ^
  where B,A are type-variables:
    B extends XY<B,A> declared in class XY
    A extends XY<A,B> declared in class XY
1 error
Run Code Online (Sandbox Code Playgroud)

任何人都可以指出这是否是对Java的泛型的故意改变

java generics types

10
推荐指数
1
解决办法
308
查看次数