、されていcount
回数のカウントを維持することが必要ですと呼ばれる。しかし、これは、count
の次のバージョンで示されているように、そうではありません。 Rubyは "速記" という表現@enum ||= ['X', 'O'].cycle
を見たとき、彼女が最初に行うことがcount
が最初に呼び出された
@enum = @enum || ['X', 'O'].cycle
、@enum #=> nil
に展開され
def count
@enum ||= ['X', 'O'].cycle
@enum.next
end
count #=> "X"
count #=> "O"
count #=> "X"
count #=> "O"
。私たちは、そのためであるcount
@enum ||= ['X', 'O'].cycle
#=> @enum = @enum || ['X', 'O'].cycle
# = #<Enumerator: ["X", "O"]:cycle> || #<Enumerator: ["X", "O"]:cycle>
# = #<Enumerator: ["X", "O"]:cycle>
に後続の呼び出しで
@enum ||= ['X', 'O'].cycle
#=> = nil || #<Enumerator: ["X", "O"]:cycle>
# = #<Enumerator: ["X", "O"]:cycle>
を得る、@enum
は変更されません。 (#<Enumerator: ["X", "O"]:cycle>
が||
以下であっても評価されません。)
私たちは、その後、
@enum.next #=> "X"
@enum.next #=> "O"
@enum.next #=> "X"
@enum.next #=> "O"
はArray.cycleとEnumerator#nextのためのドキュメントを参照してくださいしています。
コードを書くとき、特に学習するときにインデントが*スーパー重要*であることを忘れないでください。このコードはちょっと混乱していて、ここの構造は誤解を招きます。 – tadman
count = count + 1が実行されたときを考えてみましょう... ... –
これらの行を使って、countとcountを返すメソッドcountを作成しました。 Rubyはこれに対処できるかもしれませんが、コードを読んでいる人や自分自身を混乱させるでしょう。 – steenslag