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

Perl Classes,Blessing Hashes是什么?

发布时间:2020-12-16 06:11:52 所属栏目:大数据 来源:网络整理
导读:我不明白为什么Perl构造函数需要所有这些祝福,以及为什么它总是用散列完成(显然可以使用其他变量类型). 当我创建一个类的新实例时,构造函数如何返回对哈希的祝福引用有什么意义呢?我能理解“回归(这个);”或者沿着那些方向的东西,但返回一些其他随机变量只
我不明白为什么Perl构造函数需要所有这些祝福,以及为什么它总是用散列完成(显然可以使用其他变量类型).

当我创建一个类的新实例时,构造函数如何返回对哈希的祝福引用有什么意义呢?我能理解“回归(这个);”或者沿着那些方向的东西,但返回一些其他随机变量只是让我神秘(特别是当你应该使用哈希)时.

my ?var = new Test("foo");
package Test;
our $localvar;
sub new{
 localvar = $_[1];
}

好的,所以我有这个基础课.我可以在初始化时设置一个类变量,然后像$var :: localvar一样使用它.但是为了让它实际编译并在Perl中工作,我需要在行中添加“return bless {},shift;”???

看起来这个哈希被用作该类的实例,其方法相当静态.但是你仍然可以拥有类变量.听起来您只是将数据对象链接到将该对象作为参数的方法列表.但我不确定为什么每个教程都会暗示你总是使用哈希,如果那就是发生的那样.我很困惑为什么你有这个哈希和你在课堂上声明的任何“我们”,它们看起来像互相排斥的概念?

解决方法

It sounds like you are just linking a data object to a list of methods that take that object as a argument.

这正是OO的意思,是的.从构造函数返回的是实例.与其他语言不同,语言在幕后创建一个新的“对象实例”,而构造函数只负责填充插槽,在Perl中,构造函数方法可以完成整个工作. {}创建对新匿名哈希的引用,该哈希将成为对象的存储,而祝福是通过使用您的类名标记它实际将该引用转换为对象的内容.

But I am not sure why every tutorial would imply that you always use a hash if that was all that was happening.

类可以是任何类型的引用,但哈希引用是最有用和方便的,因为哈希具有命名槽,因此您可以按名称引用对象的属性.有一些例子是globref对象(文件句柄和套接字),arrayref对象(很少见,通常用于当作者非常关心速度和内存使用时只有几个字段的对象),以及scalarref对象(通常用于封装一个一些C库返回的指针).但hashref对象是“标准的”.

I can set a class variable when I initialize it and then later use it like ?var::localvar.

但你为什么要这样?类变量几乎完全没用,在你掌握更基本,有用的东西之前,没有理由去理它们.

(编辑:李大同)

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

    推荐文章
      热点阅读