程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Lua 中的 const 和 close 关键字实际上有什么作用吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Lua 中的 const 和 close 关键字实际上有什么作用吗??

开发过程中遇到Lua 中的 const 和 close 关键字实际上有什么作用吗?的问题如何解决?下面主要结合日常开发的经验,给出你关于Lua 中的 const 和 close 关键字实际上有什么作用吗?的解决方法建议,希望对你解决Lua 中的 const 和 close 关键字实际上有什么作用吗?有所启发或帮助;

我很高兴地了解到,从 Lua 5.4 开始,Lua 支持常量 (create table public.site ( id integer NOT NulL,primary key (id) ); create table public.treatment_contract ( site_id integer NOT NulL,start_date date NOT NulL,END_DATE date NOT NulL,PRIMARY KEY (site_ID,start_date,END_DATE),CONSTraiNT fk_treatment_contract__site FOREIGN KEY (site_ID) REFERENCES public.site (ID) MATCH SIMPLE ); create table public.machine ( id integer NOT NulL,primary key (id) ); create table public.machine_deployment ( site_id integer NOT NulL,machine_id integer NOT NulL,contract_start_date date NOT NulL,contract_END_DATE date NOT NulL,machine_ID,CONSTraiNT fk_machine_deployment__machine FOREIGN KEY (machine_ID) REFERENCES public.machine (ID) MATCH SIMPLE,CONSTraiNT fk_machine_deployment__treatment_contract FOREIGN KEY (site_ID,contract_start_date,contract_END_DATE) REFERENCES public.treatment_contract(site_ID,CONSTraiNT chk_machine_deploiment_period checK (start_date <= END_DATE),CONSTraiNT chk_machine_deploiment_in_contract checK (pg_catalog.daterange(start_date,END_DATE,'[]') <@ pg_catalog.daterange(contract_start_date,contract_END_DATE,'[]')) ); create table public.treatment_datapoint ( site_id integer NOT NulL,time_stamp timestamp NOT NulL,time_stamp),CONSTraiNT fk_treatment_datapoint__treatment_contract FOREIGN KEY (site_ID,CONSTraiNT chk_datapoint_in_contract checK (time_stamp::date <@ pg_catalog.daterange(contract_start_date,'[]')) ); ) 和要关闭的 (const) 变量!但是,在测试这些关键字时,它们似乎根本没有做任何事情。我编写了以下代码来对这些功能进行采样,以更好地了解它们的确切用法:

close

我将文件命名为 function f() local const x = 3 print(X) x = 2 print(X) end f() function g() local close x = {} setMetatable(x,{__close = function() print("closed!") enD}) end g() 并使用 constcheck.lua 运行它。输出如下:

lua constcheck.lua

我期待在调用 3 2 时出错,或者至少它打印 f() 两次,但它似乎重新分配了 3 没有任何问题。此外,我期待对 x 的调用打印出“已关闭!”当 g() 在函数结束时离开作用域时,但这并没有发生。我找不到很多关于这些关键字用法的例子。我是否正确使用它们?它们有用吗?

注意:x

解决方法

这是CREATE OR replaCE TABLE my-dataset.trees_temp OPTIONS( expiration_timestamp=timestAMP "2021-04-15 00:00:00 UTC" ) as ( SELECT t95.* FROM bigquery-public-data.new_york_trees.tree_census_1995 as t95 JOIN bigquery-public-data.new_york_trees.tree_census_2005 as t05 ON t95.diameter = t05.tree_dbh WHERE diameter > 30 ) 不是<const>const不是<close>

https://lwn.net/Articles/826134/

close

还有一些例子https://github.com/lua/lua/blob/master/testes/code.lua#L11

do local x <const> = 42 x = x+1 end -- ERROR: attempt to assign to const variable 'x'

https://github.com/lua/lua/blob/master/testes/files.lua#L128

local k0aux <const> = 0

,

来自Lua 5.4 Reference Manual : 3.3.7 - Local Declarations

每个变量名称都可以后缀由一个属性(尖括号之间的名称):

属性::= [‘’]

有两个可能的属性:const,它声明一个常量 变量,即不能在其后赋值的变量 初始化;和 close,它声明了一个要关闭的变量

例如,您必须编写 local x <const> = 3

您的代码 local const x = 3 相当于

local const = nil
x = 3

所以您实际上是在创建一个本地 nil 值 const 和一个全局数字值 x

大佬总结

以上是大佬教程为你收集整理的Lua 中的 const 和 close 关键字实际上有什么作用吗?全部内容,希望文章能够帮你解决Lua 中的 const 和 close 关键字实际上有什么作用吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。