小编Ral*_*lph的帖子

将元数据附加到Clojure gen-class

是否可以将元数据附加到Clojure gen-class?

我正在尝试实现一个使用库的服务器,该库需要将Java注释添加到类中.

从Chas Emerick等人,即将出版的书"Programming Clojure"(第9.7.3节)中,向gen-class方法添加注释很容易,但没有提到添加类级别的注释.

annotations clojure gen-class

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

功能等效于并发多重映射

另一个问题中,我询问了Java的并发多图.

是否有一些函数式编程(不可变)模式可以在Scala或Clojure程序中使用?我认为Scala解决方案可能涉及演员和clojure一个atom,ref或者agent,但是可能有更好的方法.由于两种语言都允许"回退"到Java互操作并只使用Java解决方案,我可以使用我在第一个问题中得到的任何答案,但这不符合函数式编程范例.Haskell程序员如何解决这个问题?

functional-programming scala clojure

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

Scala将原语隐式转换为AnyRef

在我写的Scala代码中,我有一个Map[String, AnyRef].当我尝试使用以下内容初始化Map时,Scala抱怨它期望a Map[String, AnyRef]但值为Map[String, Any]:

val myMap: Map[String, AnyRef] =
  Map("foo" -> true, "bar" -> false)
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用以下代码:

val myMap: Map[String, AnyRef] =
  Map("foo" -> true.asInstanceOf[AnyRef], "bar" -> false.asInstanceOf[AnyRef])
Run Code Online (Sandbox Code Playgroud)

我在范围内声明了以下内容:

implicit def booleanToAnyRef(value: Boolean): AnyRef = value.asInstanceOf[AnyRef]
Run Code Online (Sandbox Code Playgroud)

但编译器仍然抱怨.

编译器不应该使用隐式方法将原始布尔值转换为AnyRef值吗?有没有办法,缺少(丑陋)x.asInstanceOf[AnyRef]这些转换?

scala implicit-conversion

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

使用Scala 2.10`to`将List转换为SortedMap

我试图使用Scala 2.10中的新方法将scala.collection.immutable.List一对对转换为a ,但是我得到一个编译时错误:scala.collection.immutable.SortedMapto

scala> List((1, "Fred"), (2, "Barney")).to[scala.collection.immutable.SortedMap]
<console>:10: error: scala.collection.immutable.SortedMap takes two type parameters, expected: one
              List((1, "Fred"), (2, "Barney")).to[SortedMap]
                                                  ^
Run Code Online (Sandbox Code Playgroud)

可以使用该to方法完成吗?我错过了中间方法调用吗?

collections scala type-conversion

5
推荐指数
2
解决办法
2168
查看次数

在Scala中转换多个可选值

我正在编写一个函数,它接收几个可选String值并将每个值转换为a Int或a Boolean,然后将转换后的值传递给Unit函数以进行进一步处理.如果任何转换失败,整个函数将失败并显示错误.如果所有转换都成功,则该函数应处理转换后的值并返回成功.

这是我写的函数(从实际中简化):

f(x: Option[String], y: Option[String], z: Option[String]): Result = {
  val convertX = x.map(value => Try(value.toInt))
  val convertY = y.map(value => Try(value.toBoolean))
  val convertZ = z.map(value => Try(value.toBoolean))

  val failuresExist =
    List(convertX, convertY, convertZ).flatten.exists(_.isFailure)

  if (failuresExist) BadRequest("Cannot convert input")
  else {
    convertX.foreach {
      case Success(value) => processX(value)
      case _ =>
    }

    convertY.foreach {
      case Success(value) => processY(value)
      case _ =>
    }

    convertZ.foreach {
      case Success(value) => processZ(value)
      case _ =>
    } …
Run Code Online (Sandbox Code Playgroud)

scala type-conversion optional

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

在 Go 中从具有可变行结尾的文件中读取行

如何从行尾为回车 (CR)、换行 (NL) 或两者的文件中读取行?

PDF 规范允许行以 CR、LF 或 CRLF 结尾。

  • bufio.Reader.ReadString()bufio.Reader.ReadBytes()允许单个分隔符字节。

  • bufio.Scanner.Scan()处理\n可选的前面\r,但不是一个单独的\r

    行尾标记是一个可选的回车符,后跟一个强制换行符。

我需要编写自己的函数bufio.Reader.ReadByte()吗?

go

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

在Elm中附加可能列表

我有一个List a和一个Maybe a.我想附加可能的值,如果它是,Just a但如果它是什么都不做Nothing.

这就是我目前使用的:

aList ++ case maybeValue of
           Just value ->
             [ value ]
           Nothing ->
             []
Run Code Online (Sandbox Code Playgroud)

这样做有更好的(更惯用的)方法吗?

请注意,如果有更简洁的方法,那么前置也很好.列表顺序无关紧要.

list maybe elm

5
推荐指数
2
解决办法
608
查看次数

需要参数扩展特定类并实现特定接口

我有两个Java类层次结构,它们共享一个共同的祖先并实现一个通用接口.我需要将指向其中一个的指针传递给另一个类中的方法.

interface I { ... }

class A extends java.awt.Component implements I { ... }
class B extends java.awt.Component implements I { ... }

class D {
  Component c;
  I i;
  void m(? x) {
    c = (Component) x;
    i = (I) x;
  }
}
Run Code Online (Sandbox Code Playgroud)

有什么东西我可以替换' ?',这将允许我通过' A'或' B'?如果我将' x'转换为' java.awt.Component并将其存储在' c'并将其I存储在' i'中,我将失去强类型的好处.

我需要申报吗?

class D {
  void m(java.awt.Component c, I i) { ... }
}
Run Code Online (Sandbox Code Playgroud)

并用' m(a, a)'或' m(b, …

java scala interface multiple-inheritance

4
推荐指数
2
解决办法
1665
查看次数

apj.等

clojure.lang的JavaDocs等在线提供吗?我是否需要自己从Clojure源代码构建它?

谢谢.

api documentation clojure

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

closure.xml/emit发生了什么?

许多博客都引用了clojure.xml/emit(或clojure.contrib.lazy-xml/emit)函数,但1.2文档似乎没有.

它被弃用了吗?什么取代了它?

它可以用来编写Clojure编码的XML(例如:) {:tag :address :content {:tag :street ...} }吗?

更新:我查看了clojure.contrib.lazy-xml/emit(由Chris Houser提供)的源代码,虽然它也不是"官方",但它看起来比一个更稳定的解决方案clojure.xml/emit.

顺便说一下,我已经"发现"了clojure和clojure-contrib源代码作为写得好的惯用语Clojure(特别是由大师,Rich Hickey,两个Stuarts,Chris Houser等编写的部分)的很好的例子.我会需要花一些时间研究那些代码.

xml clojure

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