0

为什么我会收到此警告及其含义?

a = [1,3,5]
a.fetch(0) #=> 1
a.fetch(0,0) #=> 1

a.fetch(22) { "out of range" } #=> out of range
a.fetch(0,0) { "out of range" } #=> returns 1 with warning: block supersedes default value argument
4

2 回答 2

2

您正在为fetchin提供两个默认值a.fetch(0,0) { "out of range" }

  1. 中的第二0fetch(0,0)
  2. 块的返回值。

警告告诉您块的返回值用作默认值,而不是您提供的默认值。

于 2013-09-01T10:18:39.370 回答
0

Array#fetch最多接受 2 个参数。

  • 获取(索引)→ obj
  • fetch(index, default) → obj # <-----
  • 获取(索引){ |索引| 块 } → 对象

你传递的论点比最后一句要多。

于 2013-09-01T10:16:06.110 回答