我使用Scala 2.10.3.
我result.iterator()
回来了Iterator<java.util.Map<String, Object>>
.(在Java中)
我想将它转换为Scala等价物.
我import scala.collection.JavaConversions._
用来试图做到这一点.
但是,它似乎无法考虑类型参数,在这种情况下,它可以转换java.util.Iterator
为Scala等效项,但无法转换java.util.Map
为Scala等效项.
实际上,此行发生编译器错误:
val results: Iterator[Map[String, AnyRef]] = result.iterator()
type mismatch;
found : java.util.Iterator[java.util.Map[String,Object]]
required: scala.collection.Iterator[scala.collection.immutable.Map[String,AnyRef]]
val results: Iterator[Map[String, AnyRef]] = result.iterator()
^
Run Code Online (Sandbox Code Playgroud)
有没有简短的方法来做这个伎俩?
让我们假设这四个字符串列表:
List("123::foo")
List("456::bar")
List("123::hello")
List("456::scala")
Run Code Online (Sandbox Code Playgroud)
什么是最终的有效方式:
List("123","foo","hello")
List("456","bar","scala")
Run Code Online (Sandbox Code Playgroud)
并期望为大量的初始列表工作.
关于cyper请求的摘录:(假设element
在整个请求中是已知的节点变量)
MATCH p = shortestPath(element-[:LINKS*..3]-(user))
RETURN length(p)
Run Code Online (Sandbox Code Playgroud)
假设一个element
可能是a user
,我怎么能阻止在结果中检索element
代表用户本身?
如果我们可以这样做会很酷:
MATCH p = shortestPath(element-[:LINKS*1..3]-(user))
RETURN length(p)
Run Code Online (Sandbox Code Playgroud)
但它导致了这个错误:
shortestPath(...) does not support a minimal length
Run Code Online (Sandbox Code Playgroud)
实现这一伎俩最有效的方法是什么?
命令查询分离建议每个方法应该是执行操作的Command,或者是将数据返回给调用者的Query:
但是比如String类的replace()方法呢.
它的签名是:String replace(String str);
它违反了CQS,不是吗?
承认它违反了,我看不出我们如何解决它,以便作为Command的replace()可以通知调用者最新的String.实际上,根据CQS的命令必须具有返回类型的空白.
假设这段代码:
public class Test{
public static void main(String[] args) {
Test.testInt(new int[]{2,3});
Test.testInteger(new Integer[]{2,3});
}
public static void testInt(Object... elements){
System.out.println(elements[0] instanceof int[]);
}
public static void testInteger(Object... elements){
System.out.println(elements[0] instanceof Integer);
}
}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,一个人都希望有一个包含2和3的一维数组.所以预期的输出应该是第一眼:
false
true
Run Code Online (Sandbox Code Playgroud)
惊喜!实际输出是:
true
true
Run Code Online (Sandbox Code Playgroud)
本次更新的最新消息:
实际上,这不是一个好问题,因为我没有意识到这种情况符合Var-args规则.
总而言之,即使Var-args是参数,int []数组也不能自动装箱到Integer []; 没有特殊的待遇.