GVi*_*hua 1 ruby arrays methods
我想创建一个方法,mod_method(array, n)其中array是一个数组,n是一个数字.mod_method应该取数字n并将其添加到所有内部数字array并返回该新数组.
例如,使用array = ["I", "have", 3, "to", 4, "hours"],我将如何找到mod_method(array, 1)这样的
mod_method(array,1)
=> ["I", "have", 4, "to", 5, "hours"]
Run Code Online (Sandbox Code Playgroud)
我是一个菜鸟,只能使用已定义的数组和数字(让我们使用1)来做到这一点,因为:
array = ["I", "have", 3, "to", 4, "hours"]
=>[[0] "I",
[1] "have",
[2] 3,
[3] "to",
[4] 4,
[5] "hours"]
numbers = array.values_at(2, 4)
=> [
[0] 3,
[1] 4
mod = numbers.map{|x| x + 1}
=> [
[0] 4,
[1] 5]
new_array = ["I", "have", mod[0], "to", mod[1], "hours"]
=> ["I", "have", 4, "to", 5, "hours"]
Run Code Online (Sandbox Code Playgroud)
我不知道如何用未定义的参数来做mod_method.
把方法写成
def mod_method(array, n)
array.map { |i| i.is_a?(Fixnum) ? (i + n) : i }
end
array = ["I", "have", 3, "to", 4, "hours"]
mod_method(array, 1) # => ["I", "have", 4, "to", 5, "hours"]
Run Code Online (Sandbox Code Playgroud)
如果您的数组包含两者Fixnum和Float实例,并且您希望添加1其中任何一个实例.然后使用以下方法: -
def mod_method(array, n)
array.map { |i| i.kind_of?(Numeric) ? (i + n) : i }
end
array = ["I", "have", 3.2, "to", 4, "hours"]
mod_method(array, 1) # => ["I", "have", 4.2, "to", 5, "hours"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |