小编Edu*_*rdo的帖子

添加两个有符号或无符号整数

自从我上次在位和字节级别进行编程以来,已经很长时间了,并且想要确认那些日子我似乎记得的东西:

假设我有两个相等长度的整数(1,2,4,8个字节;无所谓),我将它们加起来:如果它们是有符号或无符号的,则总和的逐位结果是否不同.换句话说:无论它们是有符号整数还是无符号整数,这些位最终都是相同的吗?

我的直觉和脆弱的记忆告诉我他们会,但我只想确认一下.谢谢.

c c++ integer twos-complement

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

如何在Scala中操作JSON AST

我正在试验json4s库(基于lift-json).我想做的一件事是将JSON字符串解析为AST,然后对其进行操作.

例如,我想要一个字段(如果它不存在则将字段插入AST,或者如果它存在则更新其值).

我无法在文档中找到如何做到这一点.尝试了可用的方法,我提出了以下哪些有效,但感觉很笨拙.

import org.json4s._
import org.json4s.JsonDSL._
import org.json4s.native.JsonMethods._

object TestJson {
  implicit val formats = DefaultFormats

  def main(args: Array[String]): Unit = {
    val json = """{"foo":1, "bar":{"foo":2}}"""
    val ast = parse(json).asInstanceOf[JObject]

    println( upsertField(ast, ("foo" -> "3")) )
    println( upsertField(ast, ("foobar" -> "3")) )
  }

  def upsertField(src:JObject, fld:JField): JValue = {
    if(src \ fld._1 == JNothing){
      src ~ fld
    }
    else{
      src.replace(List(fld._1), fld._2)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我不喜欢它有很多原因:

  1. 必须明确地将结果parse(json)转换为JObject
  2. upsertField函数的结果是a JValue,如果我想进一步操作对象,我将不得不重新制作
  3. upsertField功能只是感觉很unelegant
  4. 它不适用于不在层次结构顶层的字段

有没有更好的方法来转换AST? …

scala lift-json json4s

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

根据条件构建不可变列表

我必须建立一个列表,其成员应该包含或不基于每个成员的不同条件.

假设我必须验证采购订单,并且根据价格,我必须通知许多人:如果价格超过10,则必须通知主管.如果价格超过100,那么主管和经理.如果价格超过1000,那么主管,经理和主管.

我的功能应该以价格作为输入并输出要通知的人员列表.我想出了以下内容:

def whoToNotify(price:Int) = {
  addIf(price>1000, "director",
        addIf(price>100, "manager",
              addIf(price>10, "supervisor", Nil)
        )
       )
}

def addIf[A](condition:Boolean, elem:A, list:List[A]) = {
  if(condition) elem :: list else list
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法在普通Scala中执行此操作?我用我的addIf功能在这里重新发明了一些轮子吗?

请注意,价格检查只是一种简化.在现实生活中,检查在许多数据库字段上会更复杂,并且组织层次结构中的某些人不会暗示包括下面的所有人,因此截断列表解决方案将无法工作.

编辑

基本上,我想使用不可变列表来实现以下目的:

def whoToNotify(po:PurchaseOrder) = {
      val people = scala.collection.mutable.Buffer[String]()
      if(directorCondition(po)) people += "director"
      if(managerCondition(po)) people += "manager"
      if(supervisorCondition(po)) people += "supervisor"
      people.toList
}
Run Code Online (Sandbox Code Playgroud)

scala

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

Akka Streams:如何等待几个Flow完成

我的程序中有几个Flow,我想并行处理.一切都完成后,我想触发一些行动.

执行此操作的一种方法是在每次完成后向Actor发送消息,并且当Actor验证所有流已准备好时,它可以触发该操作.

我想知道是否有一些我可能会忽略的akka​​-streams Scala DSL中的任何东西会使它更简单.

编辑:将流转换为未来是行不通的,因为正如文档所提到的,Future在流中发生的第一个事件之后立即完成.运行以下代码:

implicit val system = ActorSystem("Sys")
val fm = FlowMaterializer(MaterializerSettings())

def main(args: Array[String]): Unit = {
  val fut = Flow(1 second, {() => println("tick")}).toFuture(fm)

  fut.onComplete{ _ =>
    println("future completed")
  }
}
Run Code Online (Sandbox Code Playgroud)

打印"tick",然后是"future completed",然后是"tick"的无限序列.

scala akka akka-stream

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

如何确定(子集的笛卡尔积的联合)是否等于(全套的笛卡尔乘积)

假设我有一些有限集: A, B, ..., K

我也有A1, A2, ... AnA的子集; B1, B2, ... Bn这是B等的子集

让我们说S是笛卡尔积A x B x ... x K

并且Sn是笛卡儿的产品An x Bn x ... x Kn

有没有一种算法可以有效地确定所有联合Sn是否相等S

编辑

我也在理论计算机科学论坛上问了这个问题.答案证明问题是完全可靠的.如果答案的作者想在这里发布,我仍然可以提出问题以奖励赏金.

algorithm set cartesian-product

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

Scalatra 2.1 Akka期货示例

有没有人知道我可以找到一个经典的"聊天"应用程序的例子,使用Akka Futures和Scalatra 2.1?文档中的Futures示例有点微不足道,因为我对Akka是全新的,而且对Scalatra来说相对较新,我想从一个坚实的基础开始.我知道这可能很难,因为Scalatra 2.1仍在正式开发中.

asynchronous scala akka scalatra

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

Mongodump每日备份

我正在考虑使用mongodump进行日常备份.

如果我总是在同一目录上执行转储:在运行mongodump之前,我是否必须确保清除前一天的内容?我在文档中找不到任何相关内容.

mongodb mongodump

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

ScalaFX TableView 中的整数列

我是 ScalaFX 的新手。我正在尝试调整一个基本的 TableView 示例,以包含整数列。

到目前为止,我想出了以下代码:

class Person(firstName_ : String, age_ : Int) {
  val name = new StringProperty(this, "Name", firstName_)
  val age = new IntegerProperty(this, "Age", age_)
}

object model{
  val dataSource = new ObservableBuffer[Person]()
  dataSource += new Person("Moe",   45)
  dataSource += new Person("Larry", 43)
  dataSource += new Person("Curly", 41)
  dataSource += new Person("Shemp", 39)
  dataSource += new Person("Joe",   37)
}

object view{
  val nameCol = new TableColumn[Person, String]{
    text = "Name"
    cellValueFactory = {_.value.name}
  }

  val ageCol = …
Run Code Online (Sandbox Code Playgroud)

javafx-2 scalafx

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

我的http请求在Akka未来变为null

我的服务器应用程序使用Scalatra,json4s和Akka.

它收到的大多数请求都是POST,它们会立即返回给客户端并返回固定响应.实际响应以异步方式发送到客户端的服务器套接字.为此,我需要getRemoteAddr从http请求.我正在尝试使用以下代码:

case class MyJsonParams(foo:String, bar:Int)

class MyServices extends ScalatraServlet {
  implicit val formats = DefaultFormats

  post("/test") {
    withJsonFuture[MyJsonParams]{ params =>
      // code that calls request.getRemoteAddr goes here
      // sometimes request is null and I get an exception
      println(request)
    }
  }

  def withJsonFuture[A](closure: A => Unit)(implicit mf: Manifest[A]) = {
    contentType = "text/json"
    val params:A = parse(request.body).extract[A]
    future{
      closure(params)
    }      
    Ok("""{"result":"OK"}""")
  }    
}
Run Code Online (Sandbox Code Playgroud)

withJsonFuture函数的目的是将一些样板移出路径处理.

这有时会起作用(打印一个非空值request),有时候request是null,我觉得很令人费解.我怀疑我必须"关闭" request我的未来.但是,当没有其他请求发生时,在受控测试方案中也会发生错误.我想request是不可改变的(也许我错了?)

为了解决这个问题,我已将代码更改为以下内容:

case class …
Run Code Online (Sandbox Code Playgroud)

scala akka scalatra

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

ScalaJS:如何从JS创建Option [A]?

我有一个ScalaJS函数,我想从JS调用,它有一个Option [String]参数.我无法弄清楚如何从JS创建一些[String]和None [String].

scala.js

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