gpt4 book ai didi

perl - Perl 中有没有类似于 C# 中的 GetType() 的函数?

转载 作者:行者123 更新时间:2023-12-04 16:49:16 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How do I tell what type of value is in a Perl variable?

(5 个回答)


8年前关闭。




我已经学习了一段时间 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# 的 is运算符(operator)。那将是 isa UNIVERSAL的方法它被所有对象继承。来自 http://perldoc.perl.org/UNIVERSAL.html 文档的示例:
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") ) {
...
}

关于perl - Perl 中有没有类似于 C# 中的 GetType() 的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4728872/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com