<p><img src="https://img.php.cn/upload/article/000/887/227/170791165242514.jpg" alt="无效操作:v > max (Typparameter T und > sind nicht vergleichbar)“></p><p>php-Editor Apple ist hier, um eine häufige Fehlermeldung für Sie zu analysieren: „Ungültiger Vorgang: v > max (Typparameter T und > sind nicht vergleichbar)“. Dieser Fehler kann beim Programmieren in der PHP-Sprache auftreten, insbesondere beim Vergleichen von Typparametern. In diesem Artikel wird die Ursache dieses Fehlers und die richtige Behandlung erläutert, damit die Leser diesen ungültigen Vorgang besser verstehen und beheben können Der Schlüssel zur Lösung dieses Problems besteht darin, sicherzustellen, dass die verglichenen Typen vergleichbar sind. Im Folgenden werden wir die spezifische Lösung Schritt für Schritt vorstellen.
</p>Ich helfe Ihnen gerne bei der Lösung Ihres Problems mit der Funktion „findminmax“. Eine Fehlermeldung mit der Meldung v > max oder v < min weist darauf hin, dass möglicherweise ein Problem mit der Vergleichsoperation innerhalb der Funktion vorliegt. Um eine genaue Lösung bereitzustellen, muss ich mir die Implementierung der Funktion findminmax ansehen. Ihrer Beschreibung zufolge scheint der Typ t, der vergleichbar sein soll, Probleme beim Vergleich zu verursachen. <h2 class="daan">
</h2>Ich habe erwartet, dass die Funktion findminmax ordnungsgemäß funktioniert. <p><p>Workaround</p><p>Sie werden für den </p>-Operator benötigt. <h2 class="daan">
</h2>Geordnete Einschränkungen liegen bei <p><code>t</code> 类型参数使用了 <a href="https://www.php.cn/link/422e42d058a41c75062760d7d640debf" rel="nofollow noreferrer"><code>comarable</code></a> 约束。 <code>comparable</code> 的意思是:<em>可比较</em>。因此,您可以对该类型的值使用 <code>==</code> 运算符。这并不意味着它们是<em>有序的</em>,这是使用 <code><</code> <code>></code></p>. <p>
<a href=" https: rel="nofollow noreferrer">Kompilieren Sie mit Ihrem Code: <code>golang.org/x/exp/ 中定义constraints</code> 包,请参阅 <a href="https://www.php.cn/link/b753ced14094e73576b017d9323be362#ordered" rel="nofollow noreferrer"><code>constraints.ordered</code>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">package main
import (
"fmt"
)
func findMinMax[T comparable](arr []T) (min, max T) {
for _, v := range arr {
if v > max {
max = v
} else if v < min {
min = v
}
}
return min, max
}
func main() {
arr := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
fmt.Println(findMinMax(arr))
}</pre><div class="contentsignin">Nach dem Login kopieren</div></div>
</a>Probieren Sie es auf dem </p>Go-Spielplatz<p> aus. </p>
<p>Es liefert falsche Ergebnisse, weil Sie mit einem Nullwert beginnen <a href="https://www.php.cn/link/b18336c06954cf0a92113517ca2bdd29" rel="nofollow noreferrer"> bleibt der Nullwert. </a>
</p>Eine einfache Lösung besteht darin, mit dem ersten Wert zu initialisieren, wenn das übergebene Slice nicht leer ist <p>: <code>min</code> 和 <code>max</code> ,并且如果传递的切片中的所有值都大于或小于零值,则 <code>min</code> 或 <code>max</code>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">import (
"fmt"
"golang.org/x/exp/constraints"
)
func findminmax[t constraints.ordered](arr []t) (min, max t) {
for _, v := range arr {
if v > max {
max = v
} else if v < min {
min = v
}
}
return min, max
}</pre><div class="contentsignin">Nach dem Login kopieren</div></div>
</p>Dies wird ausgegeben (versuchen Sie es auf <p>Go Playground<code>min</code> 和 <code>max</code>): </p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">func findminmax[t constraints.ordered](arr []t) (min, max t) {
if len(arr) > 0 {
min, max = arr[0], arr[0]
}
for _, v := range arr {
if v > max {
max = v
} else if v < min {
min = v
}
}
return min, max
}</pre><div class="contentsignin">Nach dem Login kopieren</div></div>
<p>Beachten Sie, dass Sie bei Verwendung von Gleitkommatypen <a href="https://www.php.cn/link/ed7ec77be8029e30e8532d41448d1c52" rel="nofollow noreferrer">-Werte explizit behandeln müssen, da deren Reihenfolge bei anderen Gleitkommazahlen nicht angegeben ist. </a></p></a></p>
Das obige ist der detaillierte Inhalt vonUngültige Operation: v > max (Typparameter T und > sind nicht vergleichbar). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!