我如何使用`yield`?

fwe*_*fwf 2 ruby yield

我有一个清单:

list = ["mango", "apple", "pearl", "peach"]
Run Code Online (Sandbox Code Playgroud)

我需要使用yield这行代码:

answer = myIndexOf(list) {|e| e == "apple"}
Run Code Online (Sandbox Code Playgroud)

返回值1,该值是"apple"数组中的索引.

我有这个,但我不明白yield.

def myIndexOf(list)  
  yield answer if block_given?  
  result = list.index(answer)  
  return answer  
end  
Run Code Online (Sandbox Code Playgroud)

任何人都可以对此有所了解吗?

Ser*_*sev 7

理解产量/块实际上非常简单.只需将块视为方法和yield调用这些方法的方法.

想象一下,你有这个,而不是阻止

def is_this_the_right_item?(item)
  item == "apple"
end

def myIndexOf(a_list)
  # your implementation goes here
end

answer = myIndexOf(list)
Run Code Online (Sandbox Code Playgroud)

你可以编写这个实现的代码myIndexOf吗?它根本不涉及屈服.当你做,你只要把块回的调用myIndexOf,并更换所有通话is_this_the_right_item?使用yield.

  • 显然,我可以粘贴固定代码.但那里的学习在哪里? (7认同)