MST
星途 面试题库

面试题:Ruby中不可变对象与冻结技术:冻结数组后的行为

在Ruby中,定义一个数组`arr = [1, 2, 3]`,然后对其调用`arr.freeze`。之后尝试向数组中添加一个新元素`arr << 4`,会发生什么?请解释原因并给出正确捕获该错误的代码示例。
16.3万 热度难度
编程语言Ruby

知识考点

AI 面试

面试题答案

一键面试
  1. 会发生的情况: 当对已经freeze的数组arr调用arr << 4时,会抛出RuntimeError,错误信息类似于can't modify frozen Array。这是因为freeze方法将数组对象标记为不可变,一旦数组被冻结,对其进行任何修改操作(如添加元素、删除元素、修改元素值等)都会导致运行时错误。
  2. 正确捕获该错误的代码示例
arr = [1, 2, 3]
arr.freeze
begin
  arr << 4
rescue RuntimeError => e
  puts "捕获到错误: #{e.message}"
end