我正在将下面的代码重构为ES2015类(我已经省略了一大堆代码来坚持这一点):
?- time((fibluc(100, X, Y), fibluc(N, X, Z))).
% 10,070,701 inferences, 3.216 CPU in 3.222 seconds (100% CPU, 3131849 Lips)
X = 354224848179261915075,
Y = Z, Z = 792070839848372253127,
N = 100 ;
% 1,415,320 inferences, 0.493 CPU in 0.496 seconds (100% CPU, 2868423 Lips)
false.
我转换为:
//game.js
angular.module("klondike.game", [])
.service("klondikeGame", ["scoring", KlondikeGame]);
function KlondikeGame(scoring) {
this.newGame = function newGame() {
var cards = new Deck().shuffled();
this.newGameFromDeck(cards);
};
function dealTableaus(cards) {
var tableaus = [
new TableauPile(cards.slice(0, 1), scoring),
];
return tableaus;
}
}
KlondikeGame.prototype.tryMoveTopCardToAnyFoundation = function (sourcePile) {
};
我收到以下错误:
//game.js
class KlondikeGame {
constructor(scoring) {
this.scoring = scoring;
}
newGame() {
var cards = new Deck().shuffled();
this.newGameFromDeck(cards);
}
function dealTableaus(cards) {
var tableaus = [
new TableauPile(cards.slice(0, 1), this.scoring), <-- this throws an error
];
return tableaus;
}
tryMoveTopCardToAnyFoundation(sourcePile) {
...
}
}
我正在使用typescript转换器。我可以在这里找到什么?
答案 0 :(得分:0)
那应该是语法错误。你不能把function
放在你班级的中间。
您应该将它放在之前声明它的位置:在构造函数中。同样适用于newGame
方法的分配(尽管我没有看到任何理由将其置于首位)。
export class KlondikeGame {
constructor(scoring) {
this.newGame = function newGame() {
var cards = new Deck().shuffled();
this.newGameFromDeck(cards);
};
function dealTableaus(cards) {
var tableaus = [new TableauPile(cards.slice(0, 1), scoring)];
return tableaus;
}
}
tryMoveTopCardToAnyFoundation(sourcePile) {
}
}
请注意scoring
是一个(本地)变量,不是实例的属性,只在构造函数内的范围内,它被声明为参数。