当我创建一个类的新实例时,构造函数如何返回对哈希的祝福引用有什么意义呢?我能理解“回归(这个);”或者沿着那些方向的东西,但返回一些其他随机变量只是让我神秘(特别是当你应该使用哈希)时.
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.
但你为什么要这样?类变量几乎完全没用,在你掌握更基本,有用的东西之前,没有理由去理它们.
总结以上是内存溢出为你收集整理的Perl Classes,Blessing Hashes是什么?全部内容,希望文章能够帮你解决Perl Classes,Blessing Hashes是什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)