我确定我的问题看起来有点基础,但不知怎的,我无法理解Walk()函数如何防止副作用的概念。
让我们在例子中说:
x (1,"a",3)
print(x)
会导致副作用在控制台中打印值并更改环境。现在为了避免这种情况,我们用x%>%walk(print)下的purr包下的walk函数替换它以避免这种情况但仍然在控制台中显示值,这不是副作用吗?
这有什么不同?
此外,我们可以使用walk2函数并在一组参数上迭代函数并提供一组结果。现在这会改变系统的状态,这怎么不是副作用?
所以我的潜在疑问是walk()函数如何成功避免副作用
答案 0 :(得分:2)
我不太确定walk()函数可以避免副作用。 来自文档:
describe user('bogus_user') do
it { should exist }
its('uid') { should eq 1002 }
%w(bogus_user sftpusers airflow).each do |group|
its('groups') { should include group }
end
its('home') { should eq '/var/ftp/pub/bogus_user' }
end
因此副作用发生,但输入被返回(无形)。
https://www.rdocumentation.org/packages/purrr/versions/0.2.3/topics/map