如果我List[Option[A]]
在Scala中有一个过滤掉None
值的惯用方法是什么?
一种方法是使用以下内容:
val someList: List[Option[String]] = List(Some("Hello"), None, Some("Goodbye"))
someList.filter(_ != None)
Run Code Online (Sandbox Code Playgroud)
有更"惯用"的方式吗?这看起来很简单.
在进行提前编译时,是否可以在多个源文件上拆分Clojure命名空间:gen-class
?怎么做(:main true)
和(defn- ...)
发挥?
我的问题的目的不是要开始一场火焰战争,而是要确定在什么情况下每种语言都是"工作的最佳工具".
我已经阅读了几本关于Clojure的书(Clojure 编程,实用Clojure,Clojure 的喜悦,以及Clojure in Action的Manning Early Access版本),我认为这是一本很棒的语言.我目前正在阅读Let Over Lambda,它主要涉及Common Lisp宏,而且它也是一种非常有趣的语言.
我不是 Lisp专家(更多的是新手),但这个语言系列对我来说很有吸引力,一般来说,功能编程也是如此.
Clojure的优点(以及"其他"的缺点):
在JVM上运行.
JVM是一个非常稳定,高性能的语言环境,很好地满足了Sun的"一次编写,几乎在任何地方运行"的梦想.我可以在我的Macbook Pro上编写代码,将其编译成可执行的JAR文件,然后在Linux和Microsoft Windows上运行它,几乎不需要额外的测试.
(Hotspot和其他)JVM支持高质量的垃圾收集和非常高效的即时编译和优化.就在几年前,我写了一些必须在C中快速运行的东西,现在我毫不犹豫地在Java中这样做.
标准,简单,多线程模型.Common Lisp是否有标准的多线程包?
打破了所有这些括号的单调[]
,{}
和#{}
,虽然Common Lisp的专家可能会告诉我,有读者宏,你可以添加那些CL.
Clojure的缺点:
其他人的优点(特别是Common Lisp)(以及Clojure的缺点):
用户可定义的阅读器宏.
其他优点?
思考?其他差异?
React.PropTypes
在TypeScript React应用程序中使用是否有意义还是仅仅是"腰带和吊带"的情况?
由于组件类是使用Props
类型参数声明的:
interface Props {
// ...
}
export class MyComponent extends React.Component<Props, any> { ... }
Run Code Online (Sandbox Code Playgroud)
添加是否有任何实际好处
static propTypes {
myProp: React.PropTypes.string
}
Run Code Online (Sandbox Code Playgroud)
到班级定义?
我无法让JAXB在Resteasy JAX-RS服务器应用程序中解组时间戳.
我的班级看起来像这样:
@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "foo")
public final class Foo {
// Other fields omitted
@XmlElement(name = "timestamp", required = true)
protected Date timestamp;
public Foo() {}
public Date getTimestamp() {
return timestamp;
}
public String getTimestampAsString() {
return (timestamp != null) ? new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(timestamp) : null;
}
public void setTimestamp(final Date timestamp) {
this.timestamp = timestamp;
}
public void setTimestamp(final String timestampAsString) {
try {
this.timestamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(timestampAsString);
} catch (ParseException ex) {
this.timestamp = …
Run Code Online (Sandbox Code Playgroud) 我有一个使用Ant脚本构建的Java项目.我正在尝试将项目转换为Maven.
其中一个任务生成一个名为Version.java的Java源文件,其中包含编译时间戳的静态String表示形式,如下所示:
package com.foo.bar;
public final class Version {
public static String VERSION="100301.1046";
}
Run Code Online (Sandbox Code Playgroud)
Ant任务非常简单:
<target name="version" depends="init" description="Create Version.java">
<echo file="src/${package.dir}/Version.java" message="package ${package.name};${line.separator}" />
<echo file="src/${package.dir}/Version.java" append="true" message="public final class Version {${line.separator}" />
<echo file="src/${package.dir}/Version.java"
append="true"
message=" public static String VERSION="${buildtime}";${line.separator}" />
<echo file="src/${package.dir}/Version.java" append="true" message="}${line.separator}" />
<echo message="BUILD ${buildtime}" />
</target>
Run Code Online (Sandbox Code Playgroud)
是否可以使用生成源或其他简单方法在Maven中执行类似的操作?
如何将"命令"发送到RESTful服务器?
使用案例:我的服务器缓存某些信息,以便每次请求信息时都不必读取数据库.我需要一种方法从我的客户端应用程序发送命令,告诉服务器刷新缓存.你会在像".../flush_cache"这样的URL上使用POST或PUT吗?
"命令"实际上不是需要"Representational State Transfer"的数据,除非被传输的状态是命令的结果 - "开关关闭","缓存被刷新"等.作为一般规则,如何做REST将命令发送到服务器?
我有一个名为@Pojo的自定义注释,我用它来生成自动维基文档:
package com.example.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.METHOD)
public @interface Pojo {
Class<?> value();
}
Run Code Online (Sandbox Code Playgroud)
我这样使用它:
@Pojo(com.example.restserver.model.appointment.Appointment.class)
Run Code Online (Sandbox Code Playgroud)
注释资源方法,以便注释处理器可以自动生成描述其期望的资源和类型的Wiki页面.
我需要value
在注释处理器中读取字段的值,但我收到运行时错误.
在我的处理器的源代码中,我有以下几行:
final Pojo pojo = element.getAnnotation(Pojo.class);
// ...
final Class<?> pojoJavaClass = pojo.value();
Run Code Online (Sandbox Code Playgroud)
但实际的类不适用于处理器.我想我需要一个javax.lang.model.type.TypeMirror
代替真正的班级的代理人.我不确定如何获得一个.
我得到的错误是:
javax.lang.model.type.MirroredTypeException: Attempt to access Class object for TypeMirror com.example.restserver.model.appointment.Appointment
Run Code Online (Sandbox Code Playgroud)
这Appointment
是我的一个@Pojo
注释中提到的类.
不幸的是,关于Java注释处理的文档和/或教程似乎很少.尝试使用谷歌搜索.
当我查询数据库并接收(仅向前,只读)ResultSet时,ResultSet就像一个数据库行列表.
我试图找到一些方法来像Scala一样对待这个ResultSet Stream
.这将允许这样的操作的filter
,map
等等,而不是消耗大量的内存.
我实现了一个尾递归方法来提取单个项目,但是这要求所有项目同时在内存中,如果ResultSet非常大,则会出现问题:
// Iterate through the result set and gather all of the String values into a list
// then return that list
@tailrec
def loop(resultSet: ResultSet,
accumulator: List[String] = List()): List[String] = {
if (!resultSet.next) accumulator.reverse
else {
val value = resultSet.getString(1)
loop(resultSet, value +: accumulator)
}
}
Run Code Online (Sandbox Code Playgroud) 你如何处理Haskell中的函数可见性和单元测试?
如果导出模块中的每个函数以便单元测试可以访问它们,则可能会冒其他人调用不应该在公共API中的函数.
我想到使用{-# LANGUAGE CPP #-}
然后用以下方法包围出口#ifdef
:
{-# LANGUAGE CPP #-}
module SomeModule
#ifndef TESTING
( export1
, export2
)
#endif
where
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
java ×3
clojure ×2
scala ×2
common-lisp ×1
comparison ×1
compilation ×1
datetime ×1
haskell ×1
jaxb ×1
lisp ×1
maven-2 ×1
namespaces ×1
option ×1
reactjs ×1
rest ×1
resultset ×1
scheme ×1
stream ×1
types ×1
typescript ×1
unit-testing ×1