我是一个没有经验的 JavaScript 用户,正在阅读《CoffeeScript:加速 JavaScript 开发》一书,其中作者制作了一种 Scrabble 应用程序(Scrabble 单词在 5 x 5 网格中)来演示实践中的一些概念。我对randomLetter
下面的方法有点麻烦。有人可以参考以下几点解释下面的代码片段:
i) 作者确实这样做了,x = 1
但随后似乎用 . 为 x 分配了一个字母x += tileCounts[letter]
。为什么要这样做?
ii) 如果与我在 (i) 中的假设相反,他给 x 分配了一个数字而不是一个字母,那么“字母”实际上代表与每个字母相关的数字是如何工作的?
iii) 根据你在这里看到的,你能弄清楚为什么他只返回大于随机数的 x 吗?我意识到这里可能没有足够的信息来回答这个问题,但如果有,请解释
tileCounts =
A: 9, B: 2, C: 2, D: 4, E: 12, F: 2, G: 3, H: 2, I: 9, J: 1, K: 1, L: 4
M: 2, N: 6, O: 8, P: 2, Q: 1, R: 6, S: 4, T: 6, U: 4, V: 2, W: 2, X: 1
Y: 2, Z: 1
totalTiles = 0
totalTiles += count for letter, count of tileCounts
alphabet = (letter for letter of tileCounts).sort()
randomLetter = ->
randomNumber = Math.ceil Math.random() * totalTiles
x = 1
for letter in alphabet
x += tileCounts[letter]
return letter if x > randomNumber
#END:moduleVars