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

什么是Perl相当于Python的type()函数

发布时间:2020-12-16 06:11:31 所属栏目:大数据 来源:网络整理
导读:参见英文答案 How do I tell what type of value is in a Perl variable?????????????????????????????????????5个 我可以用Python做到这一点: type(1)class 'int' 什么是Perl等价物? 解决方法 Perl并没有像Python或Ruby那样区分字符串和数字.在Perl中,运
参见英文答案 > How do I tell what type of value is in a Perl variable?????????????????????????????????????5个
我可以用Python做到这一点:

>>> type(1)
<class 'int'>

什么是Perl等价物?

解决方法

Perl并没有像Python或Ruby那样区分字符串和数字.在Perl中,运算符的使用决定了变量的解释方式.

在Python中,当您编写1 2时,Python会检查每个参数的类型,看到它们是数字,然后执行添加(3).如果你写’1”2′,它会看到两者都是字符串,并执行连接(’12’).如果你写1’2’你会得到一个类型错误.

在Perl中,运算符会在其参数上强加数字上下文.每个参数都转换为一个数字(如果参数无法干净地转换,则会发出后续警告),然后执行加法(3).如果你写’1”2′,参数仍会转换为数字,结果为3.

如果你想连接,你会使用.操作符:1. 2即使两个参数都是数字,也会产生’12’.

因此,由于Perl的运算符强制进行类型解释,因此变量本身不需要(也不包含)类型.如果你真的需要确定哪个是哪个,你可以使用Scalar :: Util的looks_like_number函数,但是通常在Perl中编写代码表示设计问题.

Perl的标量变量可以包含以下四种内容之一:

>数字
>字符串
>未定义的值(undef)
>引用(可以是对任何基本类型或对象的引用)

ref关键字用于确定标量是否包含引用,以及引用的类型.

ref(1)         --> ''  (a false value)
ref('string')  --> ''  (a false value)
ref([1,2,3]) --> 'ARRAY'
ref({a => 1})  --> 'HASH'
ref(1)        --> 'SCALAR'
ref(1)       --> 'REF'
ref(sub {})    --> 'CODE'

完整列表可在perldoc -f ref找到

当引用被保存到包中时,该引用成为对象.在这种情况下,ref将返回对象被祝福的包的名称.

{package My::Object;
    sub new {bless {}}
}

my $obj = My::Object->new;

ref($obj)  -->  'My::Object'

(编辑:李大同)

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

    推荐文章
      热点阅读