在Java集合框架中,Collection接口声明以下方法:
返回包含此collection中所有元素的数组; 返回数组的运行时类型是指定数组的运行时类型.如果集合适合指定的数组,则返回其中.否则,将使用指定数组的运行时类型和此集合的大小分配新数组.
如果你想实现这个方法,你将如何创建一个只在运行时才知道的a类型的数组?
是否有一种功能语言可以提供良好的支持和工具来构建Web服务?我一直在研究Scala(它编译为JVM并可以使用Java库)和F#(这是.NET),但这些都是年轻的并且效率低下.特别是Scala不支持尾调用消除,除了自递归函数,这限制了你可以做的组合种类(这是JVM的一个基本限制).F#是非常新的,似乎还没有得到完全支持,这使它比传统语言更具风险.
是否可以使用Haskell,ML或任何其他更传统的函数语言构建Web服务,或者最好是使用Scala还是F#?还有其他建议吗?
如果我有两个选项,如
val a = Option(2)
val b = Option(1)
Run Code Online (Sandbox Code Playgroud)
我可以写
List(a,b).sorted
Run Code Online (Sandbox Code Playgroud)
并通过插入隐式排序来正确排序.如何获得对此订购的引用,以便我可以调用compare(a,b)
并获得结果?我想要相当于
val comparison = a.compare(b)
Run Code Online (Sandbox Code Playgroud)
除非a和b是有序的实例.
我有一个使用多个连接的Criteria查询,并且生成的SQL不按顺序列出表,以便ON子句引用尚未声明的表.
为了重现这个问题,我创建了一个包含三个表的小型数据模型:Bill,Event和一个联结表BillEvent(我在问题的最后列出了一个带有实体定义的可运行JUnit测试).以下Criteria查询因语法错误而失败,因为event1
它在引用后声明.如何重写此查询以便以正确的顺序声明表?
// Get the most recent BillEvent for a bill
final Criteria criteria = session.createCriteria(BillEvent.class, "be1")
.createCriteria("event", "event1")
.createCriteria("be1.bill")
.add(Restrictions.eq("id", billId))
.createCriteria("billEvents", "be2")
.createCriteria("event", "event2", JoinType.LEFT_OUTER_JOIN,
Restrictions.ltProperty("event1.time", "time"))
.add(Restrictions.isNull("event2.id"));
Run Code Online (Sandbox Code Playgroud)
错误:
Caused by: org.h2.jdbc.JdbcSQLException: Column "EVENT1X1_.TIME" not found; SQL statement:
select
this_.id as id1_1_4_,
this_.billId as billId3_1_4_,
this_.eventId as eventId4_1_4_,
this_.note as note2_1_4_,
hibernatej2_.id as id1_0_0_,
hibernatej2_.label as label2_0_0_,
be2x3_.id as id1_1_1_,
be2x3_.billId as billId3_1_1_,
be2x3_.eventId as eventId4_1_1_,
be2x3_.note as note2_1_1_,
event2x4_.id as id1_2_2_,
event2x4_.time as time2_2_2_, …
Run Code Online (Sandbox Code Playgroud) 我有一个抽象类,它有一个带varargs的构造函数.Java编译器似乎并不要求子类调用super(),即使每个构造函数都接受参数.
public abstract class Parent {
public Parent(String... varargs) {
}
}
public class Child extends Parent {
// I would like this to be a compile error. Child should always call super().
}
Run Code Online (Sandbox Code Playgroud)
我Parent
该怎么写才能让孩子打电话super()
?
我想创建一个在工厂中使用的系统来测量从装配线上下来的物体的尺寸.物体是石板,大致长方形,我喜欢宽度和高度.每块石头都用闪光灯拍摄在同一位置,因此条件非常可控.棘手的部分是石头表面有时会有图案(通常是带有涟漪和条纹的大理石),它们有时几乎是黑色的,与阴影融为一体.
我尝试从背景的参考图像中简单地减去每个图像,但是在光线和滚轮的位置以及输出真正有噪声的机器的位置上有足够小的变化.
我计划接下来尝试的方法是使用Canny的边缘检测算法,然后使用某种数值优化(可能是Nelder-Mead)将4边多边形与边缘匹配.然而,在我回家酿造之前,是否存在一种在这种情况下运作良好的现有方法?
如果它有所帮助,就可以使用已知在平板内的图像补丁(它们总是排列在角落中)来"种子化"算法,以帮助识别其表面图案和颜色.如有必要,我还可以制作一套带注释图像的训练集.
一些样本背景图像和一些石板:
machine-learning computer-vision object-recognition image-segmentation
Typescript 编译器将为 const 推断字符串文字类型:
const a = 'abc';
const b: 'abc' = a; // okay, a is of type 'abc' rather than string
Run Code Online (Sandbox Code Playgroud)
但是,对于属性,类型被推断为string
。
const x = {
y: 'def',
};
const z: { y: 'def' } = x; // error because x.y is of type string
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我怎样才能让编译器在不为 编写类型注释的情况下推断出它x
的类型?{ y: 'def' }
x
编辑:有一个未决问题请求支持此功能。一种建议的解决方法是使用如下语法:
const x = new class {
readonly y: 'def';
};
const z: { readonly y: 'def' } = …
Run Code Online (Sandbox Code Playgroud) 我希望能够双击.xsd并让Eclipse在文本编辑器中打开它,但如果我添加一个".xsd"文件关联,它会显示XML编辑器作为列表中的第一个编辑器说"(由'XML(Illformed)'内容类型锁定)(由'XSD'内容类型锁定)"等,并且在内容类型面板下,XML部分全部被锁定.Eclipse正在解析我的XML文件都是错误的,使用结构化编辑器是没有意义的.我该如何禁用它?
我在Scala的ValueSet中发现了一些令人费解的行为.有了这样的枚举,
object MyEnum extends Enumeration{
val V1 = new MyEnum
val V2 = new MyEnum
class MyEnum extends Val
implicit def convertValue(v: Value): MyEnum = v.asInstanceOf[MyEnum]
}
Run Code Online (Sandbox Code Playgroud)
MyEnum.values
从Value到MyEnum的映射会生成另一个ValueSet,当转换为数组时,它不会保留映射类型.
val naiveMappedValues = MyEnum.values.map(
implicitly[MyEnum.Value => MyEnum.MyEnum]).toArray
// REPL prints: naiveMappedValues: Array[MyEnum.Value] = Array(V1, V2)
Run Code Online (Sandbox Code Playgroud)
如果MyEnum.values
首先转换为列表,则最终数组的类型是正确的.
val mappedValues = MyEnum.values.toList.map(
implicitly[MyEnum.Value => MyEnum.MyEnum]).toArray
// REPL prints: mappedValues: Array[MyEnum.MyEnum] = Array(V1, V2)
Run Code Online (Sandbox Code Playgroud)
为什么会这样?为什么在映射值之前首先将ValueSet转换为List?
java ×3
scala ×3
arrays ×1
collections ×1
eclipse ×1
enumeration ×1
f# ×1
hibernate ×1
implicit ×1
option ×1
typescript ×1
web-services ×1
xml ×1