【问题标题】:String array assignment in Ruby functionRuby函数中的字符串数组赋值
【发布时间】:2015-03-18 21:24:04
【问题描述】:

我是 Ruby 新手,对一般的编程也很陌生。不知道为什么 string[n]=temp[string.length-(n+1)] 会将 temp 更改为字符串数组。分配不是仅更改字符串数组吗?我已经解决了这个问题 4 个小时,任何帮助将不胜感激 =) 谢谢!

 def reverse(string)
  temp = string
  n=0
  while (string.length - n) > 0 
    string[n]=temp[string.length-(n+1)]
    n+=1
  end
  return string
end

puts reverse("abc")

【问题讨论】:

  • 临时和字符串是同一个对象。
  • @FrederickCheung,这是参考而不是副本?
  • 如果我在temp = string之后添加puts "string.object_id == #{string.object_id}, temp.object_id == #{temp.object_id}",当我执行reverse("abc")时,会打印以下内容:string.object_id == 70267640537340, temp.object_id == 70267640537340。这能告诉你什么吗?你需要temp = string.dup(虽然我没有看过你的其余代码)。

标签: ruby-on-rails ruby variable-assignment


【解决方案1】:

tempstring 是同一个对象,因为:

temp = string

因此,对string 的任何更改都将反映在temp 中。你可以复制字符串变量来避免这个问题:

temp = string.dup

【讨论】:

  • 工作得很好,谢谢。你们知道是否有任何文献可以教育我在 Ruby 上的“=”赋值运算符。它似乎与我过去使用变量的方式大不相同。再次感谢您!
  • @MarkThomas 我想问什么?
猜你喜欢
  • 2020-07-31
  • 2017-09-27
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 2016-05-12
  • 2014-11-02
  • 2021-09-11
相关资源
最近更新 更多