Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby-工作于;“收益率”;在每个迭代器中_Ruby - Fatal编程技术网

Ruby-工作于;“收益率”;在每个迭代器中

Ruby-工作于;“收益率”;在每个迭代器中,ruby,Ruby,方法可以使用Ruby yield语句调用关联的代码块一次或多次。我们还可以通过在垂直条(|)中提供屈服参数来将值传递给块。就像我在下面做的一样 1 def print_name 2 puts "Hello " 3 yield "Vikram" 4 end 5 6 animals = %w( ant bee cat dog elk ) 7 animals.each {|animal| puts animal } 8 animals.each 9

方法可以使用Ruby yield语句调用关联的代码块一次或多次。我们还可以通过在垂直条(|)中提供屈服参数来将值传递给块。就像我在下面做的一样

  1 def print_name
  2   puts "Hello "
  3   yield "Vikram"
  4 end
  5 
  6 animals = %w( ant bee cat dog elk )
  7 animals.each {|animal| puts animal }
  8 animals.each 
  9 
 10 print_name {|name| puts name}
 11 print_name
在我的代码行中,第11行给出了一个错误:

`print_name': no block given (yield) (LocalJumpError)
这意味着在调用方法时,如果不传递代码块,就不能在方法中使用yield

我的问题是,如果ruby的“each”方法中存在“yield”语句,那么在我上面的代码“anists.each”(参考第8行)中,如何在不给出任何错误的情况下工作

如果它不存在的话

animals.each {|animal| puts animal }

这不应该奏效

Ruby允许您使用检查块是否已传递给当前方法,如文档所述,如果没有给定块,则返回一个枚举数(使用
block\u given?
进行检查)


每个
不同,您的
print_name
方法尝试
产生
,无论是否给出了块,都会导致第11行出现错误。

Ruby允许您使用,如文档所述,如果没有给定块,则返回一个枚举数(使用
block\u given?
进行检查)

每个
不同,您的
print_name
方法尝试
产生
,而不管是否给出了块,从而导致第11行的错误