尝试使用包含文件列表()大家好,
我正在尝试使用 Include File List(),但出现错误。 它没有像我预期的那样工作。
这是一个例子。
我有 3 个名为 Include1.jsl、Include2.jsl、Include3.jsl 的文件,我试图将它们包含到下面列出的 TestInclude.jsl 中:
Clear Log();
//Names Default To Here( 1 );
Clear Symbols();
Clear Globals();
Include( "Include1.jsl" );
Include( "Include2.jsl" );
Include( "Include3.jsl" );
show(Include File List());
所有四个文件都在同一个文件夹中。三个包含文件中的每一个都有其对应的
show("IncludeScriptN");其中 N 为 1、2 和 3
当我运行 TestInclude,jsl 时,我希望看到:
"IncludeScript1";
"IncludeScript2";
"IncludeScript3";
Include File List() = {"C:\...\TestingLocaleScipts\TestInclude.jsl", "C:\...\TestingLocaleScipts\Include1.jsl", "C:\...\TestingLocaleScipts\Include2.jsl", "C:\...\TestingLocaleScipts\Include3.jsl"};
相反,我看到了这个:
"IncludeScript1";
"IncludeScript2";
"IncludeScript3";
Include File List() = {"C:\...\TestingLocaleScipts\TestInclude.jsl"}那么,包含的文件确实包含在内,它们确实有效,但函数没有显示它们? 我究竟做错了什么?
谢谢,
M.
回复:尝试使用包含文件列表()@vince_faller很确定从用户定义的函数调用 IncludeFileList 必须返回当前的包含文件堆栈,而不是定义函数时存在的堆栈。 正如您的示例所暗示的那样,您可以通过在包含的文件内但在函数定义之外执行 IncludeFileList 来在函数定义时捕获堆栈。
我确实认为最好的用例之一是从列表项 1 中获取当前文件的名称。
回复:尝试使用包含文件列表()明白了。 非常感谢。 脚本索引或帮助中的解释绝对不足以理解嵌套的方式:要么是包含在被称为表单的脚本中的所有脚本,要么是来自它调用根脚本的所有脚本。回复:尝试使用包含文件列表()@Craige_Hales
退休了还在工作?
您能解释一下自定义错误报告的含义吗?您是说错误发生在哪个脚本中?
因为我认为主要功能是向您展示您在通话时所处的脚本。
如果您所有的子脚本都只是不运行的函数,那么您实际上看不到包含文件 list() 嵌套,对吗?
Names default to here(1);
fn1 = Save Text File( "$temp/a.jsl", "show(Include File List()); f2 = function({}, include file list());" );
fn2 = Save Text File( "$temp/b.jsl", "include(fn1); f = function({}, include file list());" );
Include( fn2 );
show(f(), f2());回复:尝试使用包含文件列表()该函数返回包含文件的当前嵌套。 在您调用它的根级别,只有一个文件,没有实际的嵌套。 尝试从包含的文件之一调用它。
fn1 = Save Text File( "$temp/a.jsl", "show(<SPAN>Include File List</SPAN>())" );
fn2 = Save Text File( "$temp/b.jsl", "include(fn1)" );
Include( fn2 );
包含文件列表() = {"C:\Users\v1\AppData\Local\Temp\a.jsl", "C:\Users\v1\AppData\Local\Temp\b.jsl", "Script.jsl" };
script.jsl 是未保存的根级脚本的名称。
该函数用于实现自定义错误报告;如果出现问题尝试()在 fn1 文件中,您可以编写抓住报告嵌套包含的子句。 作为一个很酷的副作用,它还为您提供了当前脚本文件的名称。
有两种使用包含文件的方法:您可以将它们视为函数库,或者您可以将它们视为要执行的代码块。 这包含文件列表如果它们是函数库,则不是很有用,因为大多数代码在包含运行时都没有执行……它定义了函数并返回。 但是如果包含文件是一个代码块,在包含时运行,并且可能包含更多代码块,那么包含文件列表可能有助于调试。