gpt4 book ai didi

Ruby <<(双小于)与实例变量

转载 作者:数据小太阳 更新时间:2023-10-29 07:15:19 26 4
gpt4 key购买 nike

我不确定这是有效代码:

class Library
def initialize(games)
@games = games
end

def add_game(game)
games << game
end

def games()
@games
end
end

games = ['WoW','SC2','D3']
lib = Library.new(games)
puts lib.games
lib.add_game('Titan')
puts lib.games

这将打印出:

魔兽世界SC2D3泰坦

我认为它应该打印出来

魔兽世界SC2D3

add_game 方法不使用实例变量。作为 Ruby 的新手,我不明白这是如何工作的。它不应该是:

def add_games(game)
@games << game
end

我正在从一个教程中阅读这篇文章,但我无法找到任何关于 << 如何与实例变量一起工作的信息。我认为'<<'在处理数组时只是重载了'追加到数组'。这实际上是在用单例类做某事吗?

最佳答案

这段代码有点困惑。线路:

games << game

实际上是在调用方法games ,返回 @games .然后 <<对该结果调用方法。 Ruby 解析器中有一些语法糖可以将 << 转换为运算符转换为对左操作数的方法调用,并且在此之前正在评估左操作数。

编辑更清晰:

这一行可以这样写:

(games).<< game

或者这个:

(self.games).<< game

或:

(self.games) << game

所有这些都执行 games方法。

关于Ruby <<(双小于)与实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15372642/

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