Ruby中返回值的关键字除了return外,还有一个returning,使用returning返回结果时,可以对结果进行处理。
Rails中的示例代码如下:
def extract_namespace(record_or_hash_or_array)
returning "" do |namespace|
if record_or_hash_or_array.is_a?(Array)
record_or_hash_or_array.delete_if do |record_or_namespace|
if record_or_namespace.is_a?(String) || record_or_namespace.is_a?(Symbol)
namespace << "#{record_or_namespace}_"
end
end
end
end
end
其中namespace是returning后面的值,传入后面的block中执行后,返回namespace的结果。