Ruby-工作于;“收益率”;在每个迭代器中
方法可以使用Ruby yield语句调用关联的代码块一次或多次。我们还可以通过在垂直条(|)中提供屈服参数来将值传递给块。就像我在下面做的一样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
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行的错误