Perl Classes,Blessing Hashes是什么?
我不明白为什么Perl构造函数需要所有这些祝福,以及为什么它总是用散列完成(显然可以使用其他变量类型).
当我创建一个类的新实例时,构造函数如何返回对哈希的祝福引用有什么意义呢?我能理解“回归(这个);”或者沿着那些方向的东西,但返回一些其他随机变量只是让我神秘(特别是当你应该使用哈希)时. my ?var = new Test("foo"); package Test; our $localvar; sub new{ localvar = $_[1]; } 好的,所以我有这个基础课.我可以在初始化时设置一个类变量,然后像$var :: localvar一样使用它.但是为了让它实际编译并在Perl中工作,我需要在行中添加“return bless {},shift;”??? 看起来这个哈希被用作该类的实例,其方法相当静态.但是你仍然可以拥有类变量.听起来您只是将数据对象链接到将该对象作为参数的方法列表.但我不确定为什么每个教程都会暗示你总是使用哈希,如果那就是发生的那样.我很困惑为什么你有这个哈希和你在课堂上声明的任何“我们”,它们看起来像互相排斥的概念? 解决方法
这正是OO的意思,是的.从构造函数返回的是实例.与其他语言不同,语言在幕后创建一个新的“对象实例”,而构造函数只负责填充插槽,在Perl中,构造函数方法可以完成整个工作. {}创建对新匿名哈希的引用,该哈希将成为对象的存储,而祝福是通过使用您的类名标记它实际将该引用转换为对象的内容.
类可以是任何类型的引用,但哈希引用是最有用和方便的,因为哈希具有命名槽,因此您可以按名称引用对象的属性.有一些例子是globref对象(文件句柄和套接字),arrayref对象(很少见,通常用于当作者非常关心速度和内存使用时只有几个字段的对象),以及scalarref对象(通常用于封装一个一些C库返回的指针).但hashref对象是“标准的”.
但你为什么要这样?类变量几乎完全没用,在你掌握更基本,有用的东西之前,没有理由去理它们. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |