hongmei_xp 2009-08-07 15:42
浏览 122
已采纳

Ruby数组 [""]*3 怪异行为

[code="ruby"]
cvs = ["a",""]; #第一种空格
cvs << Array.new(3, "") # 第二种空格
cvs.flatten!()
puts cvs.inspect
cvs.collect! do |item|
item.insert(0,"\"")<<"\"";
end

puts cvs.inspect
[/code]

结果最后三个都是: """"""

第一种空格和第二种空格有什么区别?

  • 写回答

2条回答 默认 最新

  • nj0308 2009-08-07 17:20
    关注

    问题出在Array.new(3,"")上。
    对这种方式创建的Array,每个元素指向的实际上都是同一个对象。
    在你的collect!处理中,当处理到这三个元素时,每次都在同一个对象前后增加"号,所以最终变成了三对"号。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器