<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sv">
	<id>https://wiki.linux.se/index.php?action=history&amp;feed=atom&amp;title=%C3%96versikt_%C3%B6ver_generatorer</id>
	<title>Översikt över generatorer - Versionshistorik</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linux.se/index.php?action=history&amp;feed=atom&amp;title=%C3%96versikt_%C3%B6ver_generatorer"/>
	<link rel="alternate" type="text/html" href="https://wiki.linux.se/index.php?title=%C3%96versikt_%C3%B6ver_generatorer&amp;action=history"/>
	<updated>2026-04-28T22:52:23Z</updated>
	<subtitle>Versionshistorik för denna sida på wikin</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://wiki.linux.se/index.php?title=%C3%96versikt_%C3%B6ver_generatorer&amp;diff=3324&amp;oldid=prev</id>
		<title>Admin: /* Sidslut */</title>
		<link rel="alternate" type="text/html" href="https://wiki.linux.se/index.php?title=%C3%96versikt_%C3%B6ver_generatorer&amp;diff=3324&amp;oldid=prev"/>
		<updated>2024-08-24T10:42:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Sidslut&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sv&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Äldre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen från 24 augusti 2024 kl. 10.42&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l66&quot;&gt;Rad 66:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Rad 66:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;BR&amp;gt;[[PHP]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;BR&amp;gt;[[PHP]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;BR&amp;gt;[[Språkreferens]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;BR&amp;gt;[[Språkreferens]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;BR&amp;gt;[[Språkreferens#&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Fibers&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;BR&amp;gt;[[Språkreferens#&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Generatorer&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategori:Php]]&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategori:Php]]&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.linux.se/index.php?title=%C3%96versikt_%C3%B6ver_generatorer&amp;diff=3314&amp;oldid=prev</id>
		<title>Admin: Skapade sidan med &#039;== Generatorer i PHP (PHP 5 &gt;= 5.5.0, PHP 7, PHP 8) ==  Generatorer erbjuder ett enkelt sätt att implementera enkla iteratorer utan den overhead eller komplexitet som det innebär att implementera en klass som implementerar `Iterator`-gränssnittet.  En generator gör det möjligt att skriva kod som använder `foreach` för att iterera över en uppsättning data utan att behöva skapa en array i minnet, vilket kan leda till att minnesgränsen överskrids eller att det k...&#039;</title>
		<link rel="alternate" type="text/html" href="https://wiki.linux.se/index.php?title=%C3%96versikt_%C3%B6ver_generatorer&amp;diff=3314&amp;oldid=prev"/>
		<updated>2024-08-22T09:09:08Z</updated>

		<summary type="html">&lt;p&gt;Skapade sidan med &amp;#039;== Generatorer i PHP (PHP 5 &amp;gt;= 5.5.0, PHP 7, PHP 8) ==  Generatorer erbjuder ett enkelt sätt att implementera enkla iteratorer utan den overhead eller komplexitet som det innebär att implementera en klass som implementerar `Iterator`-gränssnittet.  En generator gör det möjligt att skriva kod som använder `foreach` för att iterera över en uppsättning data utan att behöva skapa en array i minnet, vilket kan leda till att minnesgränsen överskrids eller att det k...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Generatorer i PHP (PHP 5 &amp;gt;= 5.5.0, PHP 7, PHP 8) ==&lt;br /&gt;
&lt;br /&gt;
Generatorer erbjuder ett enkelt sätt att implementera enkla iteratorer utan den overhead eller komplexitet som det innebär att implementera en klass som implementerar `Iterator`-gränssnittet.&lt;br /&gt;
&lt;br /&gt;
En generator gör det möjligt att skriva kod som använder `foreach` för att iterera över en uppsättning data utan att behöva skapa en array i minnet, vilket kan leda till att minnesgränsen överskrids eller att det krävs en betydande mängd processorkraft för att generera. Istället kan du skriva en generatorfunktion, som fungerar på samma sätt som en vanlig funktion, med undantaget att en generator kan använda `yield` så många gånger som behövs för att tillhandahålla värden att iterera över.&lt;br /&gt;
&lt;br /&gt;
Ett enkelt exempel på detta är att implementera om `range()`-funktionen som en generator. Den vanliga `range()`-funktionen måste skapa en array med alla värden och returnera den, vilket kan resultera i stora arrayer: till exempel kommer ett anrop av `range(0, 1000000)` att använda mer än 100 MB minne.&lt;br /&gt;
&lt;br /&gt;
Som ett alternativ kan vi implementera en `xrange()`-generator, som endast behöver tillräckligt med minne för att skapa ett `Iterator`-objekt och spåra generatorns aktuella tillstånd internt, vilket visar sig vara mindre än 1 kilobyte.&lt;br /&gt;
&lt;br /&gt;
=== Exempel #1 Implementering av `range()` som en generator ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
function xrange($start, $limit, $step = 1) {&lt;br /&gt;
    if ($start &amp;lt;= $limit) {&lt;br /&gt;
        if ($step &amp;lt;= 0) {&lt;br /&gt;
            throw new LogicException(&amp;#039;Steget måste vara positivt&amp;#039;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        for ($i = $start; $i &amp;lt;= $limit; $i += $step) {&lt;br /&gt;
            yield $i;&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        if ($step &amp;gt;= 0) {&lt;br /&gt;
            throw new LogicException(&amp;#039;Steget måste vara negativt&amp;#039;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        for ($i = $start; $i &amp;gt;= $limit; $i += $step) {&lt;br /&gt;
            yield $i;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Observera att både range() och xrange() ger samma&lt;br /&gt;
 * resultat nedan.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
echo &amp;#039;Ensiffriga udda tal från range():  &amp;#039;;&lt;br /&gt;
foreach (range(1, 9, 2) as $number) {&lt;br /&gt;
    echo &amp;quot;$number &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
echo &amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
echo &amp;#039;Ensiffriga udda tal från xrange(): &amp;#039;;&lt;br /&gt;
foreach (xrange(1, 9, 2) as $number) {&lt;br /&gt;
    echo &amp;quot;$number &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovanstående exempel kommer att ge följande output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ensiffriga udda tal från range():  1 3 5 7 9&lt;br /&gt;
Ensiffriga udda tal från xrange(): 1 3 5 7 9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Generatorobjekt ===&lt;br /&gt;
&lt;br /&gt;
När en generatorfunktion anropas returneras ett nytt objekt av den interna `Generator`-klassen. Detta objekt implementerar `Iterator`-gränssnittet på samma sätt som ett framåtgående iterator-objekt skulle göra, och tillhandahåller metoder som kan anropas för att manipulera generatorns tillstånd, inklusive att skicka och ta emot värden från den.&lt;br /&gt;
&lt;br /&gt;
= Sidslut =&lt;br /&gt;
Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.fibers.php&lt;br /&gt;
&amp;lt;BR&amp;gt;[[PHP]]&lt;br /&gt;
&amp;lt;BR&amp;gt;[[Språkreferens]]&lt;br /&gt;
&amp;lt;BR&amp;gt;[[Språkreferens#Fibers]]&lt;br /&gt;
[[Kategori:Php]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på &lt;br /&gt;
https://www.linux.se/kontaka-linux-se/&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>