Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby';s位移位运算符“<<&引用;与数组连用时的混淆_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Ruby';s位移位运算符“<<&引用;与数组连用时的混淆

Ruby on rails Ruby';s位移位运算符“<<&引用;与数组连用时的混淆,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在学习Ruby,但我想不出这一点。我有一个练习,我必须在包含游戏的库类中添加一个方法。每个游戏都是一个类游戏的实例。因此,解决方案如下: class Library attr_accessor :games def initialize(games) self.games = games end def has_game?(search_game) for game in games return true if game == search_

我正在学习Ruby,但我想不出这一点。我有一个练习,我必须在包含游戏的库类中添加一个方法。每个游戏都是一个类游戏的实例。因此,解决方案如下:

class Library
  attr_accessor :games

  def initialize(games)
    self.games = games
  end

  def has_game?(search_game)
    for game in games
      return true if game == search_game
    end
    false
  end

  def add_game(game)
    @games << game
  end
end
类库
属性访问器:游戏
def初始化(游戏)
self.games=游戏
结束
def有游戏?(搜索游戏)
游戏中的游戏
如果游戏==搜索游戏,则返回true
结束
假的
结束
def添加_游戏(游戏)

@games看起来
@games
是一个数组。数组的shift运算符将一个元素添加到数组的末尾,类似于
array\push


ary它不是按位左移,而是“铲”运算符。您可能知道,在Ruby中,操作符是作为方法实现的,即当您编写

1 + 1
实际情况是:

1.+(1)
当您有以下情况时,“电铲”(
)也是如此:

@games << game
我希望
@games
是类
Array
Array
的实例方法。例如:

@games = [1,2,3]
@games.class     #=> [1,2,3].class => Array
@games << 4      #=> [1,2,3,4]
@games.<<(5)     #=> [1,2,3,4,5]
@games = 7
@games.class     #=> 7.class => Fixnum
在二进制文件中,如下所示:

@games.to_s(2)   #=> "111"
然后:

然后:


receiver
的类中查找实例方法
method
的文档。例如,如果您搜索“ruby array”,第一个命中的可能是类
array

的文档,我猜
游戏
是某种

@games = [1,2,3]
@games.class     #=> [1,2,3].class => Array
@games << 4      #=> [1,2,3,4]
@games.<<(5)     #=> [1,2,3,4,5]
@games = 7
@games.class     #=> 7.class => Fixnum
@games.to_s(2)   #=> "111"
@games << 2      #=> 28
28.to_s(2)       #=> "11100"
@games = { :a => 1 }
@games.class     #=> { :a => 1 }.class => Hash
@games << { :b => 2 }
  #=> NoMethodError: undefined method `<<' for {:a=>1}:Hash
@games = [1,2,3]
@games << 4         #=> [1,2,3,4]
@games.send(:<<, 4) #=> [1, 2, 3, 4] 
receiver.method(*args)