猎豹#include不在范围内放置#def

问题描述

| 当我使用#include(不包括原始文件)包含文件时,它可以正确解析内容,但是我要在原始文件中访问的#def不存在,并且会引发错误。 基本模板:
#def sayHello($name)
hello $name
#end def
模板:
#include \"../../BaseTemplate.template\"
$sayHello(\"fred\")
    

解决方法

发生这种情况的原因是ѭ2是添加到\“ Base Template \”(实际上是一个类)的函数,但是您无法在调用模板中访问它。 我不确定解决您遇到的问题的最佳方法,但是我相信您可以在
def
行之前用
#@staticmethod
使
defHello
成为静态方法,然后导入模板而不包括它。 此页面上有更多信息。     ,好吧,看起来您可以通过属性来做到这一点:
self._CHEETAH__cheetahIncludes
这是一本包含所有包含内容的字典。 在包含之后,从模板中使用它:
 $self._CHEETAH__cheetahIncludes[include_id].the_function(*args)
对我来说,
include_id
恰好是文件路径(我是通过先打印出
_CHEETAH__cheetahIncludes
字典来发现这个的,嘿)。这样可以保证吗?不知道。 我推荐这个吗?否。是否有更好的方法来访问该功能?似乎不是。有什么缺点吗?不知道,使用后果自负。这对某人有用吗?也许 :) 我的意思是它可能是有用的功能,因为人们正在尝试这样做,但是此功能是否必要?可能不会。 我的用例是我想重用一个包含要访问父级searchList的代码段,但我想在其他模板中使用单个硬编码参数来重用此包含。我可以很容易地使这个变量首先改变searchList的行为部分,这也可能是您应该做的:)。这也将允许我从应用程序层传递它,而不是在模板中对其进行硬编码! 这很可能是好的设计,因为它可以防止我们开发人员经常被允许的捷径。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...