Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Lua:将类变量括在圆括号中时进行布尔转换的解决方法

Lua:将类变量括在圆括号中时进行布尔转换的解决方法
EN

Stack Overflow用户
提问于 2019-12-10 04:33:53
回答 1查看 45关注 0票数 2

在下面的代码中,有人能解释为什么t1:print()可以工作,但(t1):print失败。我正在尝试让(t1 * 3):print()这样的东西在不使用中间变量的情况下工作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function classTestTable(members)
  members = members or {}
  local mt = {
    __metatable = members;
    __index     = members;
  }

  function mt.print(self)
    print("something")
  end
  return mt
end

TestTable = {}
TestTable_mt = ClassTestTable(TestTable)

function TestTable:new()
   return setmetatable({targ1 = 1}, TestTable_mt )
end

TestTable t1 = TestTable:new()

t1:print() -- works fine. 
(t1):print()  -- fails with error "attempt to call a boolean value"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-10 08:05:59

Lua表达式可以扩展到多行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print




(3)

将打印3

所以

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
t1:print()
(t1):print()

实际上相当于

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
t1:print()(t1):print()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
local a = t1:print()
local b = a(t1)
b:print()

所以你要调用t1:print()的返回值

为了避免这种情况,遵循Egors的建议,用分号分隔这两个语句。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
t1:print();(t1):print()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59260281

复制
相关文章
python2中为什么在进行类定义时最好
Person类很明显能够看出区别,不继承object对象,只拥有了doc , module 和 自己定义的name变量, 也就是说这个类的命名空间只有三个对象可以操作. Animal类继承了object对象,拥有了好多可操作对象,这些都是类中的高级特性。
py3study
2020/01/09
1.2K0
布尔型变量java怎么用_java中布尔型数据怎么用
1. 赋值2113:boolean isTest = true; //直接5261赋值,如果不赋值,默4102认是falseboolean isTest = Boolean.valueOf("true"); //从字符串中1653转换后直接赋值boolean isTest = isTestFunction(); //执行方法专后,把方法返回值赋值2. 使用属:if(isTest){ //折行,如果isTest为true}或直接调用方法得到布尔值if(isTestFunction("aa")){ //折行,如果isTestFunction返回true},首先你应该知到布尔型分为true.false.你可以声明一变量先为false.当要达到要执行莫代码时再把其设为true.追问比如我自己编写了一个Name类,在类里面写了一个boolean型的方法,如public boolean equals(Name,other Name)。但是在其他程序中,我声明了两个Name型的变量name1和name2,当要调用这个类的boolean型方法的时候,应该怎么写??平常调用都是name1.A(//A表示一个方法名),但是在这个中对象应该是放在boolean的括号里面的??,建议你到 网上搜些视频看看 有关于这方面的 电驴有www.shufadashi.com防采集。
用户7886150
2021/04/28
3.6K0
Linux教程 - 在Shell脚本中声明和使用布尔变量示例
作者:Linux迷链接:https://www.linuxmi.com/shell-boolean-variables.html
用户6543014
2021/01/07
18K0
好与坏的布尔变量
  要想定义一件事物,你必须要明白和理解该事物才能做出定义。那么我们评判该定义是否恰当甚至是好坏,我们可以用该定义是否恰当表达出该事物。
Qt君
2020/07/02
4570
使用Stream进行byte[]进行转换时要注意的事
最近在做项目的时候为了对付NLB,把原来附件保存到Web服务器的方式改成了保存到数据库的方式。
深蓝studyzy
2022/06/15
5630
Lua组件在Redis中的作用
这种功能允许用户在Redis服务器上执行原子性的操作,从而避免了多次网络往返的开销。
一凡sir
2023/10/03
2880
Lua组件在Redis中的作用
类其中的变量为final时的用法
类当中final变量没有初始缺省值,必须在构造函数中赋值或直接当时赋值。否则报错。
马克java社区
2021/03/15
4530
代码块:在Java中用{}括起来的代码
 (1)在Java中用{}括起来的代码。 (2)代码块分类:(根据其位置和声明的不同) A:局部代码块       在方法定义中,用于限定变量的生命周期,及早释放,提高内存利用率。 B:构造代码块       在类中方法外出现(即在类中的成员位置),可以把多个构造方法方法中相同的代码存放到一起,用于对对象进行初始化,每次调用构造方法都执行,并且在构造方法前执行。 C:静态代码块       在类中方法外出现(即在类中的成员位置),并加上static修饰,用于对类进行初始化,静态在类加载的时候就执行了,并且只执行一次。 D:同步代码块       多线程部分讲解。 (3)面试题:     静态代码块、构造代码块、构造方法的执行顺序问题?
黑泽君
2018/10/11
8800
在 Python 中将数值变量转换为分类变量
这篇文章是今天发布的CTGAN的补充,我们可以使用pandas的cut函数将数据进行离散化、将连续变量进行分段汇总,这比写自定义函数要简单的多。
deephub
2021/11/16
2.1K0
【Python】布尔类型 ( 布尔类型变量 | 比较运算符 )
Python 中的 布尔类型 ( bool ) 用于 逻辑判断 , 布尔类型 是 数字类型 ( Number ) 的一种 , 其有两种 字面量 取值 :
韩曙亮
2023/10/11
5300
【Python】布尔类型 ( 布尔类型变量 | 比较运算符 )
将时间戳转换为天,时,分
function time2string($second){ $day = floor($second/(360024)); $second = $second%(360024); // 除去整天之后剩余的时间 $hour = floor($second/3600); $second = $second%3600; // 除去整小时之后剩余的时间 $minute = floor($second/60); $second = $second%60; // 除去整分钟之后剩余的时间 // 返回字符串 return $day.’天’.$hour.’小时’.$minute.’分’; }
快乐的小白
2023/04/06
1.1K0
Python中类变量、成员变量、局部变量的区别
class A:v1 = 100 # 类变量def __init__(self):self.v2 = 200 # 成员变量v3 = 300 # 局部变量类变量可以由类名统一修改:A.v1 = 300# 则每一个A实例里v1都变成300成员变量只能由实例自己改变:A.v2 # 这个是错的。a = A()a.v2 # 这个是可以访问的。局部变量只在函数内部生效
狼啸风云
2020/10/16
4.4K0
【游戏开发】在Lua中实现面向对象特性——模拟类、继承、多态
  Lua是一门非常强大、非常灵活的脚本语言,自它从发明以来,无数的游戏使用了Lua作为开发语言。但是作为一款脚本语言,Lua也有着自己的不足,那就是它本身并没有提供面向对象的特性,而游戏开发是一项庞大复杂的工程,如果没有面向对象功能势必会为开发带来一定的不便。不过幸好Lua中有table这样强大的数据结构,利用它再结合元表(metatable),我们便可以很方便地在Lua中模拟出类、继承和多态等面向对象编程具有的特性。
马三小伙儿
2018/09/12
3.1K0
在windows程序中嵌入Lua脚本引擎--编写自己的Lua库
        在《在windows程序中嵌入Lua脚本引擎--建立一个简易的“云命令”执行的系统》一文中,我提到了使用Lua的ffi库,可以让我们像写C代码一样写lua程序。这是个非常令我们这些C程序员激动的事。但是我们使用ffi库写出来的程序往往比较大,因为我们可能要声明一些API的原型和结构体。比如我们看luajit的wiki中关于使用ffi调用kernel32的一个例子。(转载请指明出于breaksoftware的csdn博客)如果我们要使用
方亮
2019/02/28
2.2K0
在windows程序中嵌入Lua脚本引擎--编写自己的Lua库
在 Oracle 23c 中的布尔数据类型
版本 23c 引入了 SQL 布尔数据类型。数据类型 boolean 具有真值 TRUE 和 FALSE。如果没有 NOT NULL 约束,布尔数据类型还支持真值 UNKNOWN 作为空值。
Yunjie Ge
2023/10/23
6040
在 Oracle 23c 中的布尔数据类型
分类变量进行回归分析时的编码方案
R语言中的分类变量在进行回归分析时,通常会进行一些编码设置,最常见的是哑变量设置,除了哑变量,还有其他的很多类型。
医学和生信笔记
2022/11/15
9030
分类变量进行回归分析时的编码方案
Python中的布尔类型
布尔类型还可以与其他数据类型进行逻辑运算,Python规定:0、空字符串、None为False,其他数值和非空字符串为True。
py3study
2020/01/09
1.7K0
利用gdal、rasterio将modis文件进行格式转换、投影转换
modis的hdf文件在存储上有优势,但是在实际使用过程中存在一定的弊端。例如本次重点讲解的NDVI-16D-1km、MAIAC-1D-1km两类文件,其中maiac的文件在aod属性中包含4个波段的文件,需要将4个波段最大化的利用起来。而ndvi文件则较为简单只需要把hdf文件中对应部分取用即可。
一个有趣的灵魂W
2020/09/15
2K0
利用gdal、rasterio将modis文件进行格式转换、投影转换
ES6 解构赋值详解
由于 ES6 内部使用严格相等运算符(===),判断一个位置是否有值。所以,如果一个数组成员不严格等于 undefined,默认值是不会生效的。
Leophen
2019/08/23
8030
点击加载更多

相似问题

为什么C++允许我们在声明变量时将变量名括在圆括号中?

1100

在Ruby中使用圆括号将块括起来?

32

是否使用圆括号将数据类型括起来?

50

shell -将变量括在引号中

10

在调用类时跟踪布尔变量

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文