Prolog格式

Prolog格式,prolog,format,tabular,Prolog,Format,Tabular,我对用格式制作表格有疑问,我需要制作表格,我知道我可以这样做: 例如,如果我的表格是tabla(“estudents”,“name”,“age”,“id”) 但我有一个问题,我需要得到表的属性数,然后我将每个正方形的长度设置为18,长度为N print_table_name(C):- tabla(C,A), //I SEARCH MY TABLE atom_codes(Name,C), //PASSING T

我对用格式制作表格有疑问,我需要制作表格,我知道我可以这样做:

例如,如果我的表格是
tabla(“estudents”,“name”,“age”,“id”)

但我有一个问题,我需要得到表的属性数,然后我将每个正方形的长度设置为18,长度为N

print_table_name(C):- tabla(C,A),                //I SEARCH MY TABLE
                  atom_codes(Name,C),            //PASSING THE NAME TO ATOM
                  length(A,N),                   //I GET MY NUMBER OF ATRIBUTES
                  Length is 18*N,                //Length WILL BE THE LENGTH OF THE TABLE
                  print_edge(N),                 //HERE I PRINT THE TOP EDGE
                  format('|~t~a~t~N|)|~n',Name), //HERE IS MY ERROR
                  print_edge(N).                 //HERE I PRINT THE BOTTOM EDGE

print_edge(0):- format('~n',[]).
print_edge(N):- format('+~`-t~18|+', []), M is N-1, print_edge(M), !.
format('|~t~a~t~N |)|~N',Name)
这里我不能将N作为变量传递,那么我不知道如何格式化才能得到N,N是表的长度。。 它会打印这个吗

+--------------------------------------------------------------------------+
|students
||
+--------------------------------------------------------------------------+
如果我把长度设为N,那么它就起作用了

+--------------------------------------------------------------------------+
|                                 students                                 |
+--------------------------------------------------------------------------+

问题是我不知道如何将变量N传递到format。

在这种情况下,应该将N作为参数传递给谓词。用符号*替换格式中的变量N,并将N放入参数列表中。
我不确定你是否会得到欲望效果,但至少不会失败

format('|~t~a~t~*|)|~n',[Name, N]).
编辑 现在我只能在这个有限的环境中测试解决方案:我用字符点替换
~t
,以查看效果,结果如下:

?- format('|~46t~a~46t~*|)|~n',['students', 72]).
|...............................students................................)|

PS:您确定最后两个竖线之间的括号吗?

在这种情况下,您应该将N作为参数传递给谓词。用符号*替换格式中的变量N,并将N放入参数列表中。
我不确定你是否会得到欲望效果,但至少不会失败

format('|~t~a~t~*|)|~n',[Name, N]).
编辑 现在我只能在这个有限的环境中测试解决方案:我用字符点替换
~t
,以查看效果,结果如下:

?- format('|~46t~a~46t~*|)|~n',['students', 72]).
|...............................students................................)|
PS:你确定最后两条竖线之间的括号吗