同样的函数代码,为什么在笔记本中可以正常运行,而在函数包里运行不正常?
这是写入到wl格式的函数包里的函数的运行结果:
把同样的代码粘贴到nb笔记本中的运行结果:
函数包的书写情况:
函数代码:
(*参数调整*)ParameterAdj[Dim_, L_, {ablist__List : {}},
OptionsPattern[{DEBUG -> False}]] :=
Module[{Np, Lp, ab = Rationalize[{ablist}, 0], Lengthofab, Result},
Catch[Lengthofab = Length[ab];
If[Lengthofab == 0,
Throw["Wrong:{a,b} doesn't have an input value!"]];
If[Cases[Length /@ ab, Except[2]] =!= {},
Throw["Error:Input of {a,b} is wrong!"] ];
Np =
Flatten[ParallelTable[{n1, n2, n12}, {n1, 0, Dim}, {n2, 0,
Dim - n1}, {n12, 0, Dim - n1 - n2}], 2];
Lp = Table[{l1, L - l1}, {l1, 0, IntegerPart[L/2]}];
Result =
Flatten[ParallelTable[
Np[[i]]~Join~Lp[[j]]~Join~ab[[k]], {k, 1, Lengthofab}, {i, 1,
Np // Length}, {j, 1, Lp // Length}], 2];
Result = Cases[Result, x_ /; x[[1]] >= x[[2]]](*去掉n1<n2的项*);
ClearAll[Np, Lp, ab, Lengthofab]; Return[Result]]];
每次测试均在重启内核之后进行。
这是写入到wl格式的函数包里的函数的运行结果:
把同样的代码粘贴到nb笔记本中的运行结果:
函数包的书写情况:
函数代码:
(*参数调整*)ParameterAdj[Dim_, L_, {ablist__List : {}},
OptionsPattern[{DEBUG -> False}]] :=
Module[{Np, Lp, ab = Rationalize[{ablist}, 0], Lengthofab, Result},
Catch[Lengthofab = Length[ab];
If[Lengthofab == 0,
Throw["Wrong:{a,b} doesn't have an input value!"]];
If[Cases[Length /@ ab, Except[2]] =!= {},
Throw["Error:Input of {a,b} is wrong!"] ];
Np =
Flatten[ParallelTable[{n1, n2, n12}, {n1, 0, Dim}, {n2, 0,
Dim - n1}, {n12, 0, Dim - n1 - n2}], 2];
Lp = Table[{l1, L - l1}, {l1, 0, IntegerPart[L/2]}];
Result =
Flatten[ParallelTable[
Np[[i]]~Join~Lp[[j]]~Join~ab[[k]], {k, 1, Lengthofab}, {i, 1,
Np // Length}, {j, 1, Lp // Length}], 2];
Result = Cases[Result, x_ /; x[[1]] >= x[[2]]](*去掉n1<n2的项*);
ClearAll[Np, Lp, ab, Lengthofab]; Return[Result]]];
每次测试均在重启内核之后进行。