首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在perl中,What和tie之间有什么区别?

在perl中,What和tie之间有什么区别?
EN

Stack Overflow用户
提问于 2016-12-21 08:31:55
回答 2查看 522关注 0票数 2

我在练习面试问题时发现了这个。我看了一下perldoc -f tie,但没能得到它。我了解bless,并且正在我的程序中使用。

有人能告诉我tie是什么吗?它与bless有什么关系和区别,以及它的用法?我会欣赏任何简单的例子。

PS:我是一个perl开发人员,在日常生活中使用它。我关心的不是面试,而是知道

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-21 15:31:11

bless用于构造对象。

tie允许代码为接口提供一个变量。它可能看起来像是在赋值给一个变量,但是你实际上是在调用一个sub。tie和其他形式的魔术主要用于提供“聪明”的接口(例如更改%ENV更改环境、更改%SIG集信号处理程序、$!镜像errnoperror等)。它还可以用来扩展现有代码的有用性(例如,创建一个看起来像文件句柄的东西,可以重用希望从文件句柄获取输入的代码)。

票数 4
EN

Stack Overflow用户

发布于 2016-12-21 13:51:40

我可能会这样回答你的面试问题:

绑定和祝福服务于类似的功能,因为它们将自定义行为与变量关联起来。不同之处在于关注焦点-- tie是在“标准”数据结构中添加新的行为,而bless则是创建一个“新的”数据结构。

因此,tie更多地局限于您所使用的数据类型的基本操作,其中blessed数据结构的可能性范围几乎是无限的。但折中之处在于,tieed变量可以充当替换下降的角色--如果通过将“哈希”扩展到文件或数据库,它仍然可以以相同的方式运行,而无需进行任何类型的代码修改。

这种优势在很多方面也是它的弱点--未来的程序员在面对某个代码中的对象和方法调用时,会知道他们需要通过类来了解正在发生的事情--他们可能没有意识到绑定散列(或标量)正在做一些“特殊的事情”。

因此,我建议,作为一种风格,tie应该保留给诊断和测试角色--当一个值在散列中发生变化时,记录可能是很方便的,但是不应该使用它来使事情以意想不到的方式运行。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41258330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档