Ruby中的布尔参数错误
我正在写POODR的第8章,将物体与构图相结合。然而,我似乎无法让这个例子起作用:Ruby中的布尔参数错误,ruby,oop,design-patterns,composition,Ruby,Oop,Design Patterns,Composition,我正在写POODR的第8章,将物体与构图相结合。然而,我似乎无法让这个例子起作用: class Bicycle attr_reader :size, :parts def initialize(args = {}) @size = args[:size] @parts = args[:parts] end def spares parts.spares end end 当我使用道路配置时: road_config = [['chain
class Bicycle
attr_reader :size, :parts
def initialize(args = {})
@size = args[:size]
@parts = args[:parts]
end
def spares
parts.spares
end
end
当我使用
道路配置时
:
road_config =
[['chain', '10-speed'],
['tire_size', '23'],
['tape_color', 'red']]
road_bike =
Bicycle.new(
size: 'L',
parts: PartsFactory.build(road_config)
)
p road_bike.spares.size
mountain_config =
[['chain', '10-speed'],
['tire_size', '2.1'],
['front_shock', 'Manitou', false],
['rear_shock', 'Fox']]
mountain_bike =
Bicycle.new(
size: 'L',
parts: PartsFactory.build(mountain_config)
)
p mountain_bike.spares.size
road\u bike.spares.size
返回3。这正是我所期望的。但是,当我使用mountain\u config
时:
road_config =
[['chain', '10-speed'],
['tire_size', '23'],
['tape_color', 'red']]
road_bike =
Bicycle.new(
size: 'L',
parts: PartsFactory.build(road_config)
)
p road_bike.spares.size
mountain_config =
[['chain', '10-speed'],
['tire_size', '2.1'],
['front_shock', 'Manitou', false],
['rear_shock', 'Fox']]
mountain_bike =
Bicycle.new(
size: 'L',
parts: PartsFactory.build(mountain_config)
)
p mountain_bike.spares.size
我本来希望看到4个,而不是3个。如果我从front\u shock
中删除false
,将其设置为默认值(true
),则山地自行车.备件.尺寸
返回4
为什么
false
makesmountain\u bike.spares.size
return 3?我缺少什么?因为它不需要备件-在您的备件类别中,您正在选择需要备件的备件:
def spares
select { |part| part.needs_spare }
end
该代码将返回需要备件的零件(即需要备件
为真)。front\u shock
配置中的false
将其设置为false。尝试将其他部件的需要\u备件值设置为false,以了解我的意思