我很困惑与序言,这是对我用过的任何语言(多国语言)我如何去获得argv的方式不同[0]:解析命令行参数
current_prolog_flag(argv, Argv),
write(Argv).
现在如果我尝试键入Argv [0]或Argv(0)或Argv < 0>,它会失败..这使我无法从文档中找到任何线索和帮助。似乎他们希望您已经成为prolog专家:D
另一个问题,我将如何将Argv [0]赋值给一个变量,以便稍后使用“write”打印它?
我很困惑与序言,这是对我用过的任何语言(多国语言)我如何去获得argv的方式不同[0]:解析命令行参数
current_prolog_flag(argv, Argv),
write(Argv).
现在如果我尝试键入Argv [0]或Argv(0)或Argv < 0>,它会失败..这使我无法从文档中找到任何线索和帮助。似乎他们希望您已经成为prolog专家:D
另一个问题,我将如何将Argv [0]赋值给一个变量,以便稍后使用“write”打印它?
Prolog使用匹配。
?- current_prolog_flag(argv, [File | Rest]).
File = 'C:\\Program Files\\pl\\bin\\swipl-win.exe',
Rest = ['--win_app'].
这一列表相匹配具有头部和尾部:
[Head | Tail]
头是所述第一元件和尾部是列表的其余部分。
要获得最后一个元素,使用:
?- current_prolog_flag(argv, Argv), append(_, [Last], Argv).
Argv = ['C:\\Program Files\\pl\\bin\\swipl-win.exe', '--win_app'],
Last = '--win_app'
要获得一样追加功能的帮助:
apropos(append).
您可以使用nth0和NTH1(同nth0,而是开始从计时元素1,而不是0)谓词:
current_prolog_flag(argv, Argv),
nth0(0, Argv, Argument0), % get first argument
nth0(1, Argv, Argument1), % get second argument
write(Argument0).
最经常nth0(索引,目录,元件)的使用如下:
% get element by index
nth0(1, [a, b, c, d], E) % E = b
% get index by element
nth0(I, [a, b, c, d], b) % I = 1
% enumerate elements with their corresponding indexes
List = [a, b, c, d],
forall(nth0(I, List, E), format('List[~w]=~w~n', [I, E])).
% example above prints
List[0]=a
List[1]=b
List[2]=c
List[3]=d