《Eloquent JavaScript》第三章鹰嘴豆泥示例代码疑问求助
理解鹰嘴豆泥食谱代码的逻辑与预期输出
嘿,我来帮你拆解这段《Eloquent JavaScript》里的代码,搞清楚它的逻辑和输出是什么!
首先,先看这段代码的核心结构:
hummus是一个接受**比例系数factor**的函数,用来按比例缩放食谱里的食材量- 它内部定义了一个嵌套函数
ingredient,专门负责处理单份食材的计算和打印:- 计算实际用量:把食材的基础量
amount乘以传入的比例系数factor - 处理单位单复数:如果实际用量大于1,就给单位
unit加上s变成复数形式 - 用模板字符串格式化并打印出食材信息
- 计算实际用量:把食材的基础量
当调用 hummus(1)(基础配方,不缩放)时,预期输出是:
1 can chickpeas 0.25 cup tahini 0.25 cup lemon juice 1 clove garlic 2 tablespoons olive oil 0.5 teaspoon cumin
拆解每一行的逻辑:
- 1 can chickpeas:1×1=1,不大于1,单位
can保持单数 - 0.25 cup tahini:0.25<1,单位
cup不变 - 2 tablespoons olive oil:2×1=2>1,所以
tablespoon变成复数tablespoons
如果调用 hummus(2)(双倍量配方),输出会变成:
2 cans chickpeas 0.5 cup tahini 0.5 cup lemon juice 2 cloves garlic 4 tablespoons olive oil 1 teaspoon cumin
这里因为factor是2,所有基础量都乘以2:
- 2>1,所以
can变成cans,clove变成cloves - 0.25×2=0.5<1,
cup还是单数 - 0.5×2=1,不大于1,所以
teaspoon保持单数
简单来说,这段代码就是一个可缩放的食谱生成工具,传入不同的factor就能得到对应比例的食材清单,还会自动处理单位的单复数,非常实用~
内容的提问来源于stack exchange,提问作者javeria
相关产品推荐
相关产品推荐

