加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl中的任何函数是否与C#中的GetType()类似?

发布时间:2020-12-15 21:51:26 所属栏目:大数据 来源:网络整理
导读:参见英文答案 How do I tell what type of value is in a Perl variable?5个 我现在已经学习了一点Perl,发现它与我所知道的其他OOP语言有很大的不同. 我试图翻译一个C#代码,如下所示: class Car{},class CarList{},class Program{} 和方法(伪代码): if (va
参见英文答案 > How do I tell what type of value is in a Perl variable?5个
我现在已经学习了一点Perl,发现它与我所知道的其他OOP语言有很大的不同.
我试图翻译一个C#代码,如下所示:
class Car{},class CarList{},class Program{}

和方法(伪代码):

if (var.GetType() == Car)
{
}
else if (var.GetType == CarList) 
{
}

如何在没有GetType函数的情况下在perl中编写它或者是否存在?

解决方法

在很多Perl代码中,如果您正在寻找对象类的确切名称,那么ref运算符就是您想要的.由于如果值不是引用,它是未定义的,您需要在使用字符串比较之前检查该值.
if(ref $var) {
    if(ref($var) eq 'Car') {
        # ...
    } elsif(ref($var) eq 'CarList') {
        # ...
    }
}

你更想要C#的运算符.那将是所有对象继承的UNIVERSAL的isa方法.来自http://perldoc.perl.org/UNIVERSAL.html的doc的示例:

use Scalar::Util 'blessed';

# Tests first whether $obj is a class instance and second whether it is an
# instance of a subclass of Some::Class
if ( blessed($obj) && $obj->isa("Some::Class") ) {
    ...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读