扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
01: def create_person
02: person = Person.new
03: person.nick_name = "g9"
04: person.phone = "12345"
05: person
06: end
这样写挺好。不过好像Ruby味道不够。毕竟我们希望把和创建Person有关的逻辑约束到一块儿。而Ruby里最
常用的“块儿”,就是block了:
08: def create_person
09: returning Person.new do |person|
10: person.nick_name = "g9"
11: person.phone = "12345"
12: end
13: end
上面代码里的returning,就是DHH在ActiveSupport里加的代码,让一个普通的创建函数变得更有Ruby的
风味。从俺自己的角度看,也更符合《重构》里强调的精神:减少代码间的依赖。去掉无关的中间变量。
实现returning的代码灰常简单:
15: class Kernel
16: def returning(value)
17: yield(value)
18: value
19: end
20: end
S = lambda x y z . (x z (y z))
.
K = lambda x . (lambda y . x)
.
I = lambda x . x
S K K x =
(K x) (K x) =
(lambda y . x) (lambda y . x) =
x
Y = S S K (S (K (S S (S (S S K)))) K)
,用二叉树表示为:
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者