小编Edu*_*rdo的帖子

如何从spray.io提供Array [Byte]

我在我的喷雾罐服务器中使用以下路径(使用喷雾1.2):

path("my"/"path"){
  get{
    complete{
      val buf:Array[Byte] = functionReturningArrayofByte()
      println(buf.length)
      buf
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

缓冲区的长度(以及上面代码打印的内容)是2,263,503字节.但是,my/path从Web浏览器访问时,它会下载长度为10,528,063字节的文件.

我认为spray将内容类型设置为application/octet-stream,并在完成时自动设置内容长度Array[Byte].我没有意识到我可能做错了什么.

编辑

我运行了一个小测试,并看到字节数组输出为String.因此,例如,如果我有两个字节,例如0xFF和0x01,那么输出而不仅仅是两个字节将是字符串[ 255, 1 ].我只是不知道如何输出原始内容而不是它的字符串表示.

spray

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

Akka:从回调中向自己发送消息是否安全?

我试图结合使用SWT和Akka.其中一个SWT小部件是Browser嵌入式Web浏览器,允许JS代码通过BrowserFunction对象中的回调函数调用JVM代码.

我有以下代码:

import org.eclipse.swt.widgets.Composite
import org.eclipse.swt.browser._
import akka.actor.Actor

class MyActor(parentComposite: Composite) extends Actor {
  private var mutableContent: Any = ???

  val browser = new Browser(parentComposite, SWT.BORDER)

  val browserFunction = new BrowserFunction(browser, "JS_CallableFunctionName") {
    val ref = context.self
    override def function(arguments: Array[Object]): Object = {
      ref ! "Is it safe to send a message to myself?"
      null
    }
  }

  def receive = {
    case _ => ???
  }
}
Run Code Online (Sandbox Code Playgroud)

玩家在其中一个回调中向自己发送消息是否存在任何风险?

swt scala akka

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

Flex 4:具有条件的XML文字

有没有办法在Flex中执行类似以下(伪代码)的操作:

var x:XML = <xml>
  if(condition){
    <tag>hello</tag>
  }
</xml>;
Run Code Online (Sandbox Code Playgroud)

这将返回<xml><tag>hello</tag></xml>如果条件是真实的和<xml></xml>(或<xml/>)如果条件是假的?

附加说明:我知道如何追加孩子等等.我正在寻找一种方法来在文字表达中做到这一点.

apache-flex air e4x actionscript-3

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

更强大的getOrElse?

我有以下代码:

val userName = users.get(userID) match {
  case Some(user) => user.name
  case None => "Invalid User ID"
}
Run Code Online (Sandbox Code Playgroud)

有没有更简洁的方式来写这个?

我想知道是否有类似的东西getOrElse,如果它成功(提取用户名),我会应用一个函数,否则返回一个普通值.

scala

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

将选项[A]预先添加到选项[列表[A]]的惯用法

我有:ox: Option[A]oxs: Option[List[A]].

我想要:

  • ox.get :: oxs.get如果两者都存在则返回.

  • List(ox.get)如果ox存在则返回,oxs但没有.

  • oxs.get如果oxs存在则返回,ox但没有.

  • List()两者都返回None.

我可以用ifs和matches.我只是想知道是否有任何优雅的惯用方式呢?

编辑:我已经测试过:List(ox.map(List(_)), oxs).flatten.flatten它似乎适用于所有四种情况,但它看起来仍然有点难以理解.

scala

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

具有多个参数列表的Scala方法中的尾递归

我有以下功能:

  @tailrec
  def samePrefix[A](length: Int)(a: Vector[A], b: Vector[A]): Boolean = {
    if(length<1) true
    else{
      if(a(length-1)==b(length-1)) samePrefix(length-1)(a, b)
      else false
    }
  }
Run Code Online (Sandbox Code Playgroud)

在给定要检查的长度的情况下,检查两个向量是否具有相等的第一元素.

我想知道是否打电话的部分

samePrefix(length-1)(a, b)
Run Code Online (Sandbox Code Playgroud)

首先会创建一个函数对象samePrefix(length-1)然后应用(a,b)它,或者它只是递归地调用我的方法.

scala

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

使用 Metal 进行 64 位数字运算

有一篇文章声称,对于大量数字的计算,Metal 可能比 Accelerate 框架更快。

在查看 Metal 着色器语言的文档后,我意识到不支持双精度浮点数或 64 位整数数组。我是否忽略了什么?我以为 Metal 是为 64 位 A7 处理器设计的?

accelerate-framework ios8 metal

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

如何给Scala编译器证明集合具有正确类型的元素?

我想做类似以下的事情:

val foo = List[B <% JValue] = 42 :: "hello" : Nil

让编译器知道我的列表成员可以转换为JValues.

但是,这不编译.我不能满足于List[Any]因为我必须使用其成员,其中可以转换为JValues的值是预期的,例如:

def fun[A <% JValue](x: List[A]) = ...

有什么方法可以解决这个问题吗?

scala

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

对于通用类型的特殊情况,Scala方法重载

我有以下方法:

def foo[A](x: =>A) = ???

def foo[B](x: =>WrapperType[B]) = ???
Run Code Online (Sandbox Code Playgroud)

这不会编译,因此很有意义,因为在第一种方法中,A也可以代表WrapperType[B]。我可以x在运行时检查类型,但似乎应该有一种在编译时执行此操作的方法。我该如何克服这个问题?

注意:上面的代码是我的真实代码的简化,它是:

def ifEmpty[B](errors:Seq[Error]*)(right: =>B): Either[Seq[Error], B] =
  if( areAllEmpty(errors) ) Right(right)
  else                      Left(errors.flatten)

def ifEmpty[C](errors:Seq[Error]*)(right: =>Either[Seq[Error], C]): Either[Seq[Error], C] =
  if( areAllEmpty(errors) ) right
  else                      Left(errors.flatten)
Run Code Online (Sandbox Code Playgroud)

scala

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

标签 统计

scala ×6

accelerate-framework ×1

actionscript-3 ×1

air ×1

akka ×1

apache-flex ×1

e4x ×1

ios8 ×1

metal ×1

spray ×1

swt ×1