小编Mas*_*ets的帖子

为什么我无法在 .each 方法之外修改数组?

def adjacent_sum(arr)
  narr = []
  arr.each.with_index do  |num, index|
    narr << (arr[index] + arr[index+1])
  end
  return narr
end

print adjacent_sum([3, 7, 2, 11])
#=> [10, 9, 13], because [ 3+7, 7+2, 2+11 ]

adjacent_sum([2, 5, 1, 9, 2, 4])
#=> [7, 6, 10, 11, 6], because [2+5, 5+1, 1+9, 9+2, 2+4]

Run Code Online (Sandbox Code Playgroud)

我正在尝试根据用户的输入修改 narr 。基本上尝试将所有相邻的数字相加并返回一个新数组。

编写一个相邻的方法,该方法接受一个数字数组并返回一个新数组,其中包含原始数组中相邻数字的总和。请参阅示例。

我对 Ruby 及其思维方式很陌生。我不知道该问题使用哪种迭代方法,但我知道有很多迭代方法。我可以走旧路线,只做一个 while 循环,但我想了解 .each 循环的机制。

这是错误消息:

/tmp/file.rb:5:in `+': nil can't be coerced into Integer (TypeError)
    from /tmp/file.rb:5:in `block in adjacent_sum'
    from /tmp/file.rb:3:in `each' …
Run Code Online (Sandbox Code Playgroud)

ruby arrays list

2
推荐指数
1
解决办法
126
查看次数

元素替换 - Ruby

我正在尝试创建一个新数组,其中原始数组的元素被替换为哈希中相应的值。我想将 arr 中的每个元素与 hash 中的键进行比较,如果它们相等,则将它们铲入 arr 中并在最后返回它。为什么我的代码不起作用以及如何访问/返回哈希中相应条目的键值,而不仅仅是键指向的值?如果你明白我说的话。

def element_replace(arr, hash)
  count = []
    
  
  for i in arr do
    if i == hash.key
     count << value
    else 
      count << i 
    end
  end
   
  return count

end

arr1 = ["LeBron James", "Lionel Messi", "Serena Williams"]
hash1 = {"Serena Williams"=>"tennis", "LeBron James"=>"basketball"}
print element_replace(arr1, hash1) # => ["basketball", "Lionel Messi", "tennis"]
puts

arr2 = ["dog", "cat", "mouse"]
hash2 = {"dog"=>"bork", "cat"=>"meow", "duck"=>"quack"}
print element_replace(arr2, hash2) # => ["bork", "meow", "mouse"]
puts
Run Code Online (Sandbox Code Playgroud)

ruby arrays string dictionary hashtable

1
推荐指数
1
解决办法
93
查看次数

标签 统计

arrays ×2

ruby ×2

dictionary ×1

hashtable ×1

list ×1

string ×1