理解语用
Understanding pragmas
我有一些关于 pragmas 的相关问题。让我开始回答这一行问题的是试图确定是否可以禁用 some 警告而不用一直到 no worries
(我仍然想担心,至少一点点!)。我仍然对那个具体问题的答案感兴趣。
但是考虑到这个问题让我意识到我并不真正理解 pragmas 是如何工作的。很明显,至少有一些 pragma 带有参数(例如,use isms<Perl5>
)。但它们似乎不是函数。它们在整体 MOP 中的位置?它们有点像 Traits 吗?还是包裹?有没有办法反省他们?查看当前有效的编译指示?
编译指示是语言内置的,还是用户可以添加的?在编写库时,我希望有一些 errors/warnings 用户可以选择使用 pragma 禁用它们——这可能吗,或者它们是否仅限于在编译器中使用?如果我可以创建我的 pragma,除了 pragma 更清晰的外观之外,使用 pragma 设置某些内容与使用动态变量之间是否存在实际差异?就此而言,我们如何决定应该使用 pragma 还是变量设置哪些语言特性(例如,为什么 $*TOLERANCE
不是 pragma)?
基本上,我会对您可以提供或指向我的任何有关 pragma 的信息感兴趣——尽管我的具体问题仍然是我是否可以有选择地关闭某些警告。
目前,pragmas hard-coded 处理 use
语句。他们通常要么在与当前词法范围相关联的散列中设置一些标志,要么更改语法中动态变量的设置。
由于 use
是编译时构造,您只能使用编译时构造来获取它们(当前)(因此如果它不是 BEGIN
的一部分,则需要
=10=]).
我过去一直赞成将 use
与 pragma 解耦,因为我认为它们主要是 Raku 的 Perl 根的遗留物。
所有这些都将在 RakuAST 分支中更改。我不确定 Jonathan Worthington 对 RakuAST 上下文中的 pragma 有什么想法。一方面,我认为我们应该能够将编译指示“导出”到 use
语句的范围。
我有一些关于 pragmas 的相关问题。让我开始回答这一行问题的是试图确定是否可以禁用 some 警告而不用一直到 no worries
(我仍然想担心,至少一点点!)。我仍然对那个具体问题的答案感兴趣。
但是考虑到这个问题让我意识到我并不真正理解 pragmas 是如何工作的。很明显,至少有一些 pragma 带有参数(例如,use isms<Perl5>
)。但它们似乎不是函数。它们在整体 MOP 中的位置?它们有点像 Traits 吗?还是包裹?有没有办法反省他们?查看当前有效的编译指示?
编译指示是语言内置的,还是用户可以添加的?在编写库时,我希望有一些 errors/warnings 用户可以选择使用 pragma 禁用它们——这可能吗,或者它们是否仅限于在编译器中使用?如果我可以创建我的 pragma,除了 pragma 更清晰的外观之外,使用 pragma 设置某些内容与使用动态变量之间是否存在实际差异?就此而言,我们如何决定应该使用 pragma 还是变量设置哪些语言特性(例如,为什么 $*TOLERANCE
不是 pragma)?
基本上,我会对您可以提供或指向我的任何有关 pragma 的信息感兴趣——尽管我的具体问题仍然是我是否可以有选择地关闭某些警告。
目前,pragmas hard-coded 处理 use
语句。他们通常要么在与当前词法范围相关联的散列中设置一些标志,要么更改语法中动态变量的设置。
由于 use
是编译时构造,您只能使用编译时构造来获取它们(当前)(因此如果它不是 BEGIN
的一部分,则需要
=10=]).
我过去一直赞成将 use
与 pragma 解耦,因为我认为它们主要是 Raku 的 Perl 根的遗留物。
所有这些都将在 RakuAST 分支中更改。我不确定 Jonathan Worthington 对 RakuAST 上下文中的 pragma 有什么想法。一方面,我认为我们应该能够将编译指示“导出”到 use
语句的范围。