Slide 22
Slide 22 text
transitionのコード
def transition(state, action)
case [state.is_on, action]
when [false, :turn_on]
LightingSetting.new(is_on: true, brightness: 50)
when [true, :turn_off]
LightingSetting.new(is_on: false, brightness: 0)
when [false, :toggle]
LightingSetting.new(is_on: true, brightness: 50)
when [true, :toggle]
LightingSetting.new(is_on: false, brightness: 0)
when [true, :brightness_up]
next_brightness = [state.brightness + 10, 100].min
LightingSetting.new(is_on: true, brightness: next_brightness)
when [true, :brightness_down]
next_brightness = [state.brightness - 10, 0].max
LightingSetting.new(is_on: true, brightness: next_brightness)
when [true, :turn_on], [false, :turn_off],
[false, :brightness_up], [false, :brightness_down]
state
else
raise ArgumentError, "unsupported transition"
end
end
22