我为浪费你的时间而道歉,但我被困了:/ 我几次阅读本手册,但我仍然对Prolog.Net(http://prolog.hodroj.net/版本)中的开发有一些疑问。
f(a, 20). f(a, 30). f(a, 40). f(b, 20).
f(a,X)。应该返回[20,30,40]。我尝试过Redo()方法,但它对我没用。
AbstractTerm a = new AbstractTerm(); AbstractTerm b = new AbstractTerm(); ArrayList c = new ArrayList(symptomsConfirmed.ToArray()); ArrayList d = new ArrayList(symptomsDenied.ToArray()); database.q(a, c, d, b);
导致InvalidCastException(无法从'System.Collections.ArrayList'转换为'Axiom.Runtime.AbstractTerm'。)
我会非常感谢任何帮助。 MSM。
答案 0 :(得分:0)
检查q方法的签名,我敢打赌第二个和第三个参数是Axiom.Runtime.AbstractTerm类型,而不是System.Collections.ArrayList类型。 database.q(a,c,d,b)可能是抛出异常的地方,因为它期待AbstractTerms,你在其中发送变量c和d(ArrayLists)。