Понимание про класс класса - PullRequest
0 голосов
/ 07 марта 2012

Я учусь в классе Ruby Proc. Я не понимаю, почему выполняется метод "def state =".

Я также хочу знать, почему "t1.state = 1" заканчивается "def state = (1)"

Я не понимаю разницу между "def state" и "def state ="?

Я могу понять эту связь "& proc> proc> proc.call".

    # -*- coding: utf-8 -*-
    class Terminal
      def initialize
        @connected = []
        @current_state = nil
      end
      def connect(&proc)
        @connected << proc
      end
      def current_input_terminal(terminal)
        connect do |hoge|
          terminal.state = hoge
        end
      end
      def state=(current)
        if current != 0 && current != 1
          raise(ArgumentError, "input 0 or 1")
        end
        if @current_state != current
          @current_state = current
          @connected.each do |i|
            i.call(current)
          end
        end
      end
      def state
        @current_state
      end
    end

    t1 = t2 = Terminal.new()
    t1.current_input_terminal(t2)
    t1.state = 1
    puts(t2.state,t1.state)

1 Ответ

0 голосов
/ 07 марта 2012

Это выражение:

Terminal.new.state = 1

вызовет метод def state=(current)

И это выражение

puts Terminal.new.state 

вызовет метод def state или прочитает данные

...