带有实例变量的Ruby <<(双倍小于)
发布时间:2020-12-17 03:22:50 所属栏目:百科 来源:网络整理
导读:我不确定这是如何有效的代码: class Library def initialize(games) @games = games end def add_game(game) games game end def games() @games endendgames = ['WoW','SC2','D3']lib = Library.new(games)puts lib.gameslib.add_game('Titan')puts lib.ga
我不确定这是如何有效的代码:
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 这将打印出来: 哇 我认为它应该打印出来 哇 add_game方法不使用实例变量.作为Ruby的新手,我不明白它是如何工作的.不应该是: def add_games(game) @games << game end 我正在从教程中读到这篇文章,但我无法找到关于如何<<特别适用于实例变量.我以为'<<'当处理数组'追加到数组'时,它刚刚被重载.这实际上是在做Singleton类吗? 解决方法
这段代码有点令人困惑.这条线:
games << game 实际上是调用方法游戏,返回@games.然后<<在该结果上调用方法. Ruby解析器中有一些语法糖会转换<<操作符调用左操作数上的方法调用,并在此操作之前评估左操作数. 编辑以获得更清晰: 该行可以这样写: (games).<< game 或这个: (self.games).<< game 要么: (self.games) << game 所有这些都执行游戏方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |