int.clamp în Dart

clamp ține un număr între două limite; compareTo compară două numere și dă −1, 0 sau 1.

Sintaxă
num clamp(num lowerLimit, num upperLimit)
int compareTo(num other)

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.