Vinnaren i pepparkakshustävlingen!
2018-01-16, 12:52
  #1
Medlem
Worldnatures avatar
Hej, jag ska göra ett kortspel med 52 kort i skolan som uppgift.

Kod:
Cards.prototype.shuffle = function () {
let deck = this.deck
let currentIndex = deck.length, temporaryValue, randomIndex

// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex)
currentIndex -= 1

har skrivit denna kod men får dessa fel

Split initialized 'let' declarations into multiple statements detta fel visar att denna kod är det fel på
Kod:
let currentIndex = deck.length, temporaryValue, randomIndex

Expected literal to be on the right side of !== detta fel visar att denna kod är det fel på
Kod:
while (0 !== currentIndex) {


Kod:
} else {
result = console.log('YOU GOT BUSTED!!')
}

}

// Exports

Block must not be padded by blank lines detta fel dyker upp både på
Kod:
} else { <-- felmeddelande pekar på denna

} <-- felmeddelande pekar på denna


Vad kan felet vara på dessa?
Citera
2018-01-16, 15:09
  #2
Medlem
Nu va det längesedan jag programmerade, speciellt i Java, men..

är det verkligen !== eller är det bara != ?

Ett knep jag brukade ta till va att göra ett kort litet program som innehöll den kod som rapporteras fel, där jag kan kontrollera värdet till 100% varje gång, på så sätt såg jag om jag kodat fel eller om ett värde blivit felaktigt.

Samt se om det finns ett annat sätt att göra det jag ville utföra.
Citera
2018-01-16, 15:25
  #3
Moderator
Protons avatar
Citat:
Ursprungligen postat av Worldnature
Hej, jag ska göra ett kortspel med 52 kort i skolan som uppgift.

Kod:
Cards.prototype.shuffle = function () {
let deck = this.deck
let currentIndex = deck.length, temporaryValue, randomIndex

// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex)
currentIndex -= 1

har skrivit denna kod men får dessa fel

Split initialized 'let' declarations into multiple statements detta fel visar att denna kod är det fel på
Kod:
let currentIndex = deck.length, temporaryValue, randomIndex

Expected literal to be on the right side of !== detta fel visar att denna kod är det fel på
Kod:
while (0 !== currentIndex) {


Kod:
} else {
result = console.log('YOU GOT BUSTED!!')
}

}

// Exports

Block must not be padded by blank lines detta fel dyker upp både på
Kod:
} else { <-- felmeddelande pekar på denna

} <-- felmeddelande pekar på denna


Vad kan felet vara på dessa?
Kod:
let currentIndex = deck.length, temporaryValue, randomIndex

Expected literal to be on the right side of !== detta fel visar att denna kod är det fel på
Kod:
while (0 !== currentIndex) {
Ja vad händer om du läser meddelandet och följer instruktionerna?

Kod:
while (currentIndex !== 0) {
Typ så?

Vidare så undrar jag varför du skriver din kod helt semikolonbefriad, varför gör du det? Vill minnas att js stoppar in semikolon på de ställen den tror är rätt om du själv inte gör det, skulle ju kunna förklara det andra felet du får.
Citera
2018-01-16, 20:37
  #4
Medlem
Povels avatar
(Citerar OP bara för att den var några poster upp).

Citat:
Ursprungligen postat av Worldnature
Hej, jag ska göra ett kortspel med 52 kort i skolan som uppgift.

Kod:
Cards.prototype.shuffle = function () {
let deck = this.deck
let currentIndex = deck.length, temporaryValue, randomIndex

// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex)
currentIndex -= 1

har skrivit denna kod men får dessa fel

Split initialized 'let' declarations into multiple statements detta fel visar att denna kod är det fel på
Kod:
let currentIndex = deck.length, temporaryValue, randomIndex

Expected literal to be on the right side of !== detta fel visar att denna kod är det fel på
Kod:
while (0 !== currentIndex) {


Kod:
} else {
result = console.log('YOU GOT BUSTED!!')
}

}

// Exports

Block must not be padded by blank lines detta fel dyker upp både på
Kod:
} else { <-- felmeddelande pekar på denna

} <-- felmeddelande pekar på denna


Vad kan felet vara på dessa?

Det är väl inget direkt "fel" på den där koden. De "fel" du nämner låter som en linter (digital gnällgubbe) med vissa inställningar för kodkonventioner - t.ex. hur man skall formattera kod vid variabeldeklaration. Och vilken ordning man skall ha på två operander vid jämförelse. Etc.

Linters är ju till just för att ge en påpekanden av olka slag så att man får en mer uniform stil i sitt projekt. Men om man skriver ìf (0 ==arr.length)` eller `if (arr.length == 0)` är mer en smaksak än ett riktigt fel.

Din linters inställningar verkar tillåta utelämnande av semikolon. Ändra detta

/p
Citera
2018-01-16, 20:46
  #5
Medlem
Worldnatures avatar
Citat:
Ursprungligen postat av Proton
Kod:
let currentIndex = deck.length, temporaryValue, randomIndex

Expected literal to be on the right side of !== detta fel visar att denna kod är det fel på
Kod:
while (0 !== currentIndex) {
Ja vad händer om du läser meddelandet och följer instruktionerna?

Kod:
while (currentIndex !== 0) {
Typ så?

Vidare så undrar jag varför du skriver din kod helt semikolonbefriad, varför gör du det? Vill minnas att js stoppar in semikolon på de ställen den tror är rätt om du själv inte gör det, skulle ju kunna förklara det andra felet du får.

Vet ej, det är visual studio code som reagerar på det
__________________
Senast redigerad av Worldnature 2018-01-16 kl. 20:52.
Citera
2018-01-16, 20:49
  #6
Medlem
Worldnatures avatar
Citat:
Ursprungligen postat av Povel
(Citerar OP bara för att den var några poster upp).



Det är väl inget direkt "fel" på den där koden. De "fel" du nämner låter som en linter (digital gnällgubbe) med vissa inställningar för kodkonventioner - t.ex. hur man skall formattera kod vid variabeldeklaration. Och vilken ordning man skall ha på två operander vid jämförelse. Etc.

Linters är ju till just för att ge en påpekanden av olka slag så att man får en mer uniform stil i sitt projekt. Men om man skriver ìf (0 ==arr.length)` eller `if (arr.length == 0)` är mer en smaksak än ett riktigt fel.

Din linters inställningar verkar tillåta utelämnande av semikolon. Ändra detta

/p

tack! Vet du hur man ändrar detta i visual studio code?
Citera
2018-01-16, 20:53
  #7
Moderator
Protons avatar
Citat:
Ursprungligen postat av Worldnature
tack! Vet du hur man ändrar detta i visual studio code?
Borde isf finnas nån tslint.json i ditt projekt där dessa inställningar finns.

Är det på det sättet kan du ju även ha lintern att fixa koden åt dig med, går att googla på.
Citera
2018-01-17, 10:11
  #8
Medlem
Worldnatures avatar
Har löst allt nu utom 1 problem

Kod:
let deck = this.deck
let currentIndex = deck.length, temporaryValue, randomIndex

Split initialized 'let' declarations into multiple statements


får detta felmeddelande, var menas exakt? Vad ska man göra med denna kod för att få det att fungera?
Citera
2018-01-17, 10:16
  #9
Moderator
Protons avatar
Citat:
Ursprungligen postat av Worldnature
Har löst allt nu utom 1 problem

Kod:
let deck = this.deck
let currentIndex = deck.length, temporaryValue, randomIndex

Split initialized 'let' declarations into multiple statements


får detta felmeddelande, var menas exakt? Vad ska man göra med denna kod för att få det att fungera?
Läser du felmeddelandena?

Jag förstår inte vad raden
Kod:
let currentIndex = deck.length, temporaryValue, randomIndex
ska göra heller.

En sak är att du vill att currentIndex ska innehålla deck.length, men vad ska allt det andra på den raden göra? Ska det in i currentIndex med, eller var det nåt annat du menade (högst sannolikt).

Vad ska temporaryValue innehålla och vad ska randomIndex innehålla?
Citera
2018-01-17, 18:14
  #10
Medlem
Povels avatar
Citat:
Ursprungligen postat av Worldnature
Har löst allt nu utom 1 problem

Kod:
let deck = this.deck
let currentIndex = deck.length, temporaryValue, randomIndex

Split initialized 'let' declarations into multiple statements


får detta felmeddelande, var menas exakt? Vad ska man göra med denna kod för att få det att fungera?


Den vill att du deklarerar varje variabel med en egen "let", istället för att köra flera på en gång med komma emellan. Vissa gillar den stilen, och det är vad din lint config är inställd på.

/p
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback