foo: applehello 版本 2 -6ren">
gpt4 book ai didi

ruby - << 和 = 之间的区别

转载 作者:数据小太阳 更新时间:2023-10-29 08:47:36 24 4
gpt4 key购买 nike

谁能解释为什么foo在版本 1 中发生了变化? << 之间有什么区别?和 =作业?

版本 1

foo = "apple"
bar = foo
"foo: #{foo}" # => foo: apple

bar << "hello"
"bar: #{bar}" # => bar: applehello
"foo: #{foo}" # => foo: applehello

版本 2

foo = "apple"
bar = foo
"foo: #{foo}" # => foo: apple

bar = bar + "hello"
"bar: #{bar}" # => bar: applehello
"foo: #{foo}" # => foo: apple

最佳答案

因为 =是你说的作业。
但是<<不是赋值 - 当左操作数是字符串时,它是连接运算符。
所以:

bar  = bar + "hello"

通过连接 bar 的内容创建一个新字符串与“你好”然后这个新字符串被分配给变量bar ,同时:

bar << "hello"

是否就地连接字符串 - bar不会设置为新字符串,但它包含的字符串将被修改。

所以 << bar 和 foo 在使用 = 时仍然引用同一个对象只有 bar 获得新值。

关于ruby - << 和 = 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22990606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com