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") ) { ... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |