就像我认为 Ruby 从 Perl 那里集成了一些很优秀的东西,而有些不懂 linux 的人却 认为那是 Perl 的糟粕。我想你们知道我指的是什么。
同样的,据我所知,很多程序员 (尤其是从其他语言转过来的程序员), 很讨厌 unless 和 until, 大多数情况下,他们总是使用 if 和 while 替换。
我先说下我个人见解: 个人认为 unless, 和 if 绝对是最 Rubiful 的特色之一,也是 Ruby 优雅性体现。
我这样说的依据是:
就 Ruby 这种倾向于使用自然语言方式编程的超级语言而言,罪不可饶恕的 就是在编程过程中,上下文的连贯性被打断。
我试图通过示例来讲解我的意思,不过没有上下文环境,不过很难找到合适的示例. 就简单讲一下我的理解吧。
使用 unless, until 可以很好的配合 Ruby 中的大量用于验证的 API, 使代码编 写更优雅。例如:常见的 nil? defined?
第二条,我觉得也是精华,就是使用 unless, until, 隐喻的含义是: 不管三七二十一,先执行其中的语句再说!除非 XXX..., 这种思想,在修饰形式 的 unless 和 until 发挥到了极致。
上下文环境语句.
(承接上下文环境, 你想做的事) (除非) (发生了什么....)
end
结论就是:在 Ruby 中,unless 和 until, 绝不仅仅是 if 和 while 的取反,而是思想 层面的升华,Ruby 不要求你这样一定做,但是就像社区中常说的那样,但这就是 ruby 的世界观。
楼下继续呀。欢迎不同的意见。