我想创建ruby one liner,将一些信息输出到stdout并从stdin获取数据.我有一些代码:
["This should be shown first", "This second: #{gets.chomp}"].each{|i| puts "#{i}"}
Run Code Online (Sandbox Code Playgroud)
...但显然,在每个元素的迭代之前,在评估整个数组的同时评估get.chomp.
结果,我首先提示输入,然后打印每个元素.
我可以以某种方式懒惰地评估它,按顺序打印数组并且仍然可以将整个事物放在一行中吗?
实现延迟评估的一种方法是使用过程.像这样的东西(多行可读性):
[
-> { puts "This should be shown first" },
-> { print "This second: "; puts gets.chomp },
].each(&:call)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
362 次 |
| 最近记录: |