ruby - | 之间有什么规则吗?x | 在块函数中?
问题描述
我目前正在研究积木,并注意到根据正在执行的操作,“球门柱”之间的符号似乎发生了变化,这纯粹是为了便于阅读,并且可以很容易地让每个球门柱都包含 |i|,或者这里有什么必须去的规则?
下面的代码示例。
[ 1, 3, 5, 7, 9 ].each {|i| puts i }
f = File.open("testfile")
f.each do |line|
puts line end
f.close
解决方案
您所说的“'goalposts'之间的符号”在编程中更常见地称为“参数”。
“参数”有点像过程/函数/方法/块/子例程/任何您想调用它的定义中的“孔”或“占位符”。您可以给它任何您想要的名称(当然,只要它是参数的有效标识符)。您可以在过程/函数/方法/块/子例程的主体内使用此名称,而无需知道它在运行时的确切值是什么。
然后当您执行过程/函数/方法/块/子例程时,调用者可以传递所谓的“参数”,即填充这个“洞”的特定值。然后这个“参数”将被“绑定”到参数。这意味着对于过程/函数/方法/块/子例程的特定执行,当您引用参数时,它将具有此特定值。
因此,例如,如果您有这样的事情:
def add(first_parameter, second_parameter)
first_parameter + second_parameter
end
add(23, 42)
然后first_parameter
和second_parameter
是方法的参数,和是传递给这个特定执行的参数。add
23
42
add
同样,当你有
def block_executor
yield 23, 42
end
block_executor do |first_parameter, second_parameter|
first_parameter + second_parameter
end
然后first_parameter
和second_parameter
是块的参数,23
和42
是传递给块的这个特定执行的参数。
推荐阅读
- azure - 如何使用帐户和帐户密钥创建具有 Azure WASB 存储的 Hive 表?
- label - 如何在多图中设置标签的位置?
- python - Python TypeError:不可散列的类型:scikit load_boston 数据上的“切片”
- django - 在两个数据库之间同步 postgres 表
- javascript - ES6 解构为“this”
- machine-learning - 我想检测图像中的枪支。给定背景中有这么多物体的图像,进行物体检测(对于枪)的正确步骤是什么?
- asp.net-core - 如何在我的 dot net core 项目中引用 lodash?
- java - HashMap的Node中存储hash的目的是什么?
- excel - 如何找到最大数据的行数并设置为0
- apache-kafka - 对同一个kafka主题产生一批事件相互覆盖