即使在创建实体管理器的实体管理器不再可用之后,EclipseLink也可以在实体中加载延迟关系.使用Hibernate 这不起作用,或者至少在该帖子时没有.
其他提供商怎么样?特别是OpenJPA和DataNucleus?
这有什么缺点(除了更复杂的实现)?
有没有一种很好的方法可以检查ScalaTest中的模式匹配是否成功?scalatest-users邮件列表中提供了一个选项:
<value> match {
case <pattern> =>
case obj => fail("Did not match: " + obj)
}
Run Code Online (Sandbox Code Playgroud)
但是,它没有组成(例如,如果我想断言列表的确切2个元素使用Inspectors API匹配模式).我可以编写一个匹配部分函数文字的匹配器,如果已定义则可以成功(如果我想在消息中获取模式,则必须是一个宏).还有更好的选择吗?
如何编写IEnumerator<T>需要维护某些状态的自定义实现,并仍然可以使用迭代器块来简化它?我能想到的最好的是这样的:
public class MyEnumerator<T> : IEnumerator<T> {
private IEnumerator<T> _enumerator;
public int Position {get; private set;} // or some other custom properties
public MyEnumerator() {
Position = 0;
_enumerator = MakeEnumerator();
}
private IEnumerator<T> MakeEnumerator() {
// yield return something depending on Position
}
public bool MoveNext() {
bool res = _enumerator.MoveNext();
if (res) Position++;
return res;
}
// delegate Reset and Current to _enumerator as well
}
public class MyCollection<T> : IEnumerable<T> {
IEnumerator<T> IEnumerable<T>.GetEnumerator() {
return …Run Code Online (Sandbox Code Playgroud) 在我的情况下,我有两个孩子SashForm,但这个问题适用于所有人Composite.
class MainWindow {
Sashform sashform;
Tree child1 = null;
Table child2 = null;
MainWindow(Shell shell) {
sashform = new SashForm(shell, SWT.NONE);
}
// Not called from constructor because it needs data not available at that time
void CreateFirstChild() {
...
Tree child1 = new Tree(sashform, SWT.NONE);
}
void CreateSecondChild() {
...
Table child2 = new Table(sashform, SWT.NONE);
}
}
Run Code Online (Sandbox Code Playgroud)
我事先不知道这些方法的调用顺序.我怎样才能确保它child1位于左侧和child2右侧?或者,有没有办法改变他们创建sashform 后的子女的顺序?
目前我最好的想法就是放置这样的占位符:
class MainWindow {
Sashform sashform;
private Composite …Run Code Online (Sandbox Code Playgroud) 我在Scala中有这个类:
object Util {
class Tapper[A](tapMe: A) {
def tap(f: A => Unit): A = {
f(tapMe)
tapMe
}
def tap(fs: (A => Unit)*): A = {
fs.foreach(_(tapMe))
tapMe
}
}
implicit def tapper[A](toTap: A): Tapper[A] = new Tapper(toTap)
}
Run Code Online (Sandbox Code Playgroud)
现在,
"aaa".tap(_.trim)
Run Code Online (Sandbox Code Playgroud)
不编译,给出错误
错误:扩展函数缺少参数类型((x $ 1)=> x $ 1.trim)
为什么不推断类型String?从错误看来,隐式转换似乎触发了(否则错误将沿着" tap不是类的成员String"的行).似乎转换必须是Tapper[String],这意味着参数的类型是String => Unit(或(String => Unit)*).
有趣的是,如果我注释掉任何一个tap定义,那么它就会编译.
是否有可能获得gen_server进程的当前状态(可能是通过发送一些系统消息)?它在调试时很有用.
当然,我可以添加一条消息,将当前状态返回到handle_call:
get_state(Server) -> gen_server:call(Server, '$get_state').
%% in every gen_server I want to debug
...
handle_call('$get_state', _From, State) ->
{reply, State, State};
...
Run Code Online (Sandbox Code Playgroud)
但是内置了什么(即使它有点hacky)?
我们的库使用TypeTags,但现在我们需要与需要清单的另一个库进行交互.有没有简单的方法从TypeTag创建清单?
verboseCheckQuickCheck 1中的功能似乎在QuickCheck 2中不存在(或者至少,我找不到它).有没有其他方法可以显示测试期间使用哪些值?
有一个简单的方式来获得所有当前正在等待计时器的名单开始erlang:send_after,erlang:apply_after等在二郎山?
是否可以编写一个Haskell函数,该函数取决于值是已经计算还是是thunk?例如,如果通常lazyShow :: [Int] -> String显示thunks as ?和计算值,我们会看到GHCi
> let nats = [0..]
> lazyShow nats
0 : ?
> nats !! 5
5
> lazyShow nats
0 : 1 : 2 : 3 : 4 : ?
Run Code Online (Sandbox Code Playgroud) scala ×3
erlang ×2
haskell ×2
c# ×1
datanucleus ×1
eclipselink ×1
gen-server ×1
hibernate ×1
iterator ×1
java ×1
jpa ×1
openjpa ×1
overloading ×1
quickcheck ×1
reflection ×1
scala-2.10 ×1
scalatest ×1
swt ×1