동물과 양파: 기본 JavaScript 생성기
14549 단어 javascript
randomAnimalGeneratorFunc 만들기
먼저 동물(및 양파) 목록을 저장하는 생성기 함수를 만듭니다. Generator가 반복됨에 따라 임의의 동물(또는 양파!)이 산출되고 목록에서 제거됩니다.
function* randomAnimalGeneratorFunc() {
let animals = [
"🧅",
"cat",
"dog",
"hamster",
"bird",
"snake",
"turtle",
"guinea pig",
"horse",
"fish",
"mouse",
"lemur",
"whale",
"crab",
];
while (animals.length) {
const i = Math.floor(Math.random() * animals.length);
yield animals[i];
animals.splice(i, 1);
}
}
표준 함수
yield
문과 매우 다른 return
문 뒤의 코드가 어떻게 도달하고 실행되는지 확인하십시오.Generator를 변수에 할당
randomAnimalGeneratorFunc()
함수는 생성기 함수입니다. 호출될 때마다 변수에 할당할 수 있는 새 Generator를 반환합니다.const randomAnimalGenerator = randomAnimalGeneratorFunc();
const anotherRandomAnimalGenerator = randomAnimalGeneratorFunc();
위의 예에서
randomAnimalGenerator
와 anotherRandomAnimalGenerator
는 서로 다른 두 생성기입니다. animals
의 randomAnimalGenerator
목록에서 항목을 제거해도 animals
의 anotherRandomAnimalGenerator
목록에 직접적인 영향을 미치지 않습니다.Generator 함수의 범위 외부에서 선언된 변수에 저장된 객체 또는 배열에 대한 중첩된 참조가 있는 더 복잡한 데이터 구조가 있는 경우 이러한 참조 객체는 예상대로 Generators에서 부작용을 경험하게 됩니다.
동물 기능
const randomAnimalGenerator = randomAnimalGeneratorFunc();
const animal = () => {
const a = randomAnimalGenerator.next();
if (!a.done) {
return a.value === "🧅" ? "🧅🧅🧅🧅 Onions!!!!" : a.value;
}
return `You're out of animals (and onions).`;
};
animal
함수는 animals
의 randomAnimalGenerator
목록에서 임의의 동물을 반환합니다. 양파가 발견되면 알림을 받게 되며 RCA 보고서의 정보를 사용할 수 있습니다. 전체animals
목록을 살펴본 후에는 재설정 기능을 작성하지 않았기 때문에 다시 시작하려면 앱을 다시 로드해야 합니다.양파 기능
const randomAnimalGenerator = randomAnimalGeneratorFunc();
const onion = () => {
let o = randomAnimalGenerator.next();
while (!o.done) {
if (o.value === "🧅") {
return "🧅🧅🧅🧅 Onions!!!!";
}
console.log(o.value);
o = randomAnimalGenerator.next();
}
return `You're out of animals (and onions).`;
};
onion
함수는 animals
목록에 있는 모든 동물의 무작위 목록을 반환합니다. 양파를 만나면 위험을 경고하기 위해 실행이 중단됩니다. onion
함수를 두 번 실행하면 나머지 동물이 무작위 순서로 반환됩니다. animals
목록이 비어 있으면 알림이 표시됩니다.함께 모아서
function* randomAnimalGeneratorFunc() {
let animals = [
"🧅",
"cat",
"dog",
"hamster",
"bird",
"snake",
"turtle",
"guinea pig",
"horse",
"fish",
"mouse",
"lemur",
"whale",
"crab",
];
while (animals.length) {
const i = Math.floor(Math.random() * animals.length);
yield animals[i];
animals.splice(i, 1);
}
}
const randomAnimalGenerator = randomAnimalGeneratorFunc();
const animal = () => {
const a = randomAnimalGenerator.next();
if (!a.done) {
return a.value === "🧅" ? "🧅🧅🧅🧅 Onions!!!!" : a.value;
}
return `You're out of animals (and onions).`;
};
const onion = () => {
let o = randomAnimalGenerator.next();
while (!o.done) {
if (o.value === "🧅") {
return "🧅🧅🧅🧅 Onions!!!!";
}
console.log(o.value);
o = randomAnimalGenerator.next();
}
return `You're out of animals (and onions).`;
};
randomAnimalGenerator
및 animal
함수 외부에서 onion
를 정의하여 두 함수가 동일한 생성기를 공유하고 animal
에 의해 생성된 모든 부작용이 onion
에 영향을 미치고 그 반대의 경우도 마찬가지임을 보여줍니다.P.S. 저는 양파를 좋아합니다! 🧅
Reference
이 문제에 관하여(동물과 양파: 기본 JavaScript 생성기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/365erik/animals-and-onions-a-basic-javascript-generator-5hi5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)