【发布时间】:2014-02-20 09:01:22
【问题描述】:
我正在阅读这篇关于如何以函数式风格使用 Ruby 编程的文章。 https://code.google.com/p/tokland/wiki/RubyFunctionalProgramming
引起我注意的一个例子如下:
# No (mutable):
output = []
output << 1
output << 2 if i_have_to_add_two
output << 3
# Yes (immutable):
output = [1, (2 if i_have_to_add_two), 3].compact
虽然“可变”选项不太安全,因为我们更改了数组的值,但不可变选项似乎效率较低,因为它调用了.compact。这意味着它必须迭代数组以返回一个没有 nil 值的新数组。
在这种情况下,哪个选项更可取?一般来说,您如何在不变性(功能性)与性能(在命令式解决方案更快的情况下)之间进行选择?
【问题讨论】:
标签: ruby functional-programming immutability performance