Ce face int.clamp
x.clamp(min, max) returnează x dacă este între limite, min dacă e mai mic și max dacă e mai mare. Este felul simplu de a scrie „nota trebuie să fie între 1 și 10”. Tipul declarat al rezultatului este num; dacă toate valorile sunt int, analizorul îl consideră int.
a.compareTo(b) dă un număr negativ dacă a < b, 0 dacă sunt egale și pozitiv dacă a > b (pentru int: −1, 0, 1). Îl folosești la sortare: lista.sort((a, b) => a.compareTo(b)). Ordinea inversă: b.compareTo(a).
Parametri
| Parametru | Descriere |
|---|---|
lowerLimit, upperLimit |
Limitele; lowerLimit trebuie să fie ≤ upperLimit, altfel aruncă ArgumentError. |
other |
La compareTo: numărul cu care se compară. |
Ce returnează
clamp: valoarea limitată. compareTo: un int (negativ, 0, pozitiv).
Exemple
Exemplul 1: Note între 1 și 10
void main() {
var punctaje = [12, 7, -2, 10, 0];
for (var p in punctaje) {
print('$p → ${p.clamp(1, 10)}');
}
print(150.clamp(0, 100));
}
Rezultat
12 → 10
7 → 7
-2 → 1
10 → 10
0 → 1
100
Exemplul 2: Sortare cu compareTo
void main() {
print(3.compareTo(5));
print(5.compareTo(5));
print(8.compareTo(5));
var varste = [34, 19, 52, 27];
varste.sort((a, b) => b.compareTo(a));
print(varste);
}
Rezultat
-1
0
1
[52, 34, 27, 19]
Greșeli frecvente
- Inversezi limitele:
x.clamp(10, 1)aruncăArgumentError. - Verifici
a.compareTo(b) == -1. Pentru alte tipuri (de exemplu texte) rezultatul poate fi orice număr negativ; scrie< 0.
Comenzi înrudite
int.abs: abs() dă valoarea absolută (fără semn); sign dă −1, 0 sau 1, după semnul numărului.Comparable: Interfața pentru obiecte care au o ordine naturală; compareTo dă negativ, zero sau pozitiv.num: Tipul comun pentru int și double: o variabilă num poate ține orice număr.