不确定我是否正确地提出了问题,但我会解释。我已经创建了一个类,并且我已经在该类中创建了实例,问题是我希望能够使用用户通过输入选择的实例。假设我想创建一个国际象棋游戏。我希望能够向前(可能向后),向左和向右移动一块。假设我已经在类中创建了一个方法来移动片段,每个片段都有一个名字,x-coord和y-coord。这是我得到的问题
const Promise = require('bluebird')
router.post("/users/:user/photos/upload", middle.isLoggedIn, upload.array("photos", 4), async function(req, res, next) {
try {
let foundUser = await User.findById(req.params.user)
if (!foundUser) throw new Error(`No user found: $user`)
let results = await Promise.map(req.files, async file => {
let newImage = await Image.create(file)
newImage.human = foundUser
await newImage.save()
console.log(newImage)
let user_update = await User.addPhoto(req.params.user, newImage)
console.log(user_update)
}
}
catch (err) {
next(err)
}
})
现在我收到一个错误,因为分配给变量的输入是一个字符串,当我需要rook.move时,我实际上得到'rook'.move 我理解变量可以使用int(var),float(var),str(var)来改变,但是如何将变量更改为类变量。
答案 0 :(得分:1)
一种方法是使用字典将片段名称映射到您的类。
所以
pieces = {
'Queen': Piece(0,0),
'Tower': Piece(0,0),
'Rook' Piece(0,0)
}
inp = input('Which piece would you like to move?')
if inp in pieces:
pieces[inp]().move(4, right)
else:
print('No such piece: %s - Valid pieces: %s' % (inp, pieces.keys()))