惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Blog of Author Tim Ferriss
罗磊的独立博客
月光博客
月光博客
GbyAI
GbyAI
腾讯CDC
G
Google Developers Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
U
Unit 42
Engineering at Meta
Engineering at Meta
A
About on SuperTechFans
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
aimingoo的专栏
aimingoo的专栏
C
Check Point Blog
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Azure Blog
Microsoft Azure Blog
I
InfoQ
雷峰网
雷峰网
B
Blog RSS Feed
美团技术团队
M
MIT News - Artificial intelligence
有赞技术团队
有赞技术团队
D
Docker

博客园 - 小熊bryan

坐视——做事——做势 InfoQ中文站正式升级为1.5版 编辑絮语 今年…… 书店的风景 要敏捷一点,再敏捷一点 对Ruby中Kernel的callcc方法的研究 理解ruby核心概念:Object, Class, Module, Kernel 再试试看 越来越觉得自己的博客像个包子 翻译作品:为敏捷团队设计协作空间 用元编程的方式向Ruby添加properties 《Programming Ruby 中文版第二版》P577页singleton_method_undefined方法说明有点问题 是没有好音乐,还是我们没有好心境? Best of Ruby Quiz 之四 Animal Quiz之我的答案 Best of Ruby Quiz 笔记之三:GEDCOM Parser 使用REXML在ruby中处理xml 软件的业务价值来自哪里?——business value generally comes from using software 要问五次为什么--业务需求挖掘之道(摘自Wikipedia)
【翻译】在ruby中实现attributes的lazily initialization(惰...
小熊bryan · 2007-07-30 · via 博客园 - 小熊bryan


【翻译】Ruby: Lazily Initialized Attributes
url(注:原文网址访问不到,估计是被和谐了):
http://blog.jayfields.com/2007/07/ruby-lazily-initialized-attributes.html
http://95555.info/index.php?q=aHR0cDovL2Jsb2cuamF5ZmllbGRzLmNvbS8yMDA3LzA3L3J1YnktbGF6aWx5LWluaXRpYWxpemVkLWF0dHJpYnV0ZXMuaHRtbA%3D%3D&hl=0111101001&s=mza5mdcxmjewndjon01vbjbwbq==


在第一次访问一个attribute时对其进行初始化,而不是在构造函数里面完成。
[code]
class Employee 
 def initialize   
  @emails = [] 
 end
end
[/code]
变为
[code]
class Employee 
 def emails   
  unless instance_variable_defined?(:@emails)   
   @emails = []
  end
  @emails 
 end
end
[/code]
动机:
增加代码可读性。
上述例子非常简单。如果Employee这个类有多个属性需要初始化的话,构造函数就需要包含所有的初始化逻辑。而采取lazy initialization的方式可以把各个属性的初始化逻辑放置在它们自己的访问函数中。
运作机制:
将初始化逻辑移到属性的getter方法中
示例见上。