Content deleted Content added
No edit summary |
mNo edit summary |
||
(60 intermediate revisions by 38 users not shown) | |||
Line 1:
{{
In [[computer science]], the term '''range''' may refer to one of three things:
# The possible values that may be stored in a [[variable (programming)|variable]].
# The upper and lower bounds of an [[Array data structure|array]].
# An alternative to [[iterator]].
== Range of a variable ==
The range of a variable is given as the set of possible
== Range of an array ==
{{Main|Array data type#Indexing notation}}
When an array is numerically
== Range as an alternative to iterator ==
Another meaning of ''range'' in computer science is an alternative to [[iterator]]. When used in this sense, range is defined as "a pair of begin/end iterators packed together"
| author =
| author-link = Andrei Alexandrescu
| title = Iterators Must Go
| url = https://accu.org/content/conf2009/AndreiAlexandrescu_iterators-must-go.pdf
| date = 6 May 2009
|
| publisher = BoostCon 2009
}}</ref>
In particular, such ranges are supported in [[C++20]],<ref>[https://en.cppreference.com/w/cpp/ranges cppreference]</ref> [[Boost C++ Libraries]]
==
[[File:Range UML class.svg|thumb|A generic class representing a range, it contains a start property and a end property]]
A data type for ranges can be implemented using [[Generic programming|generics]].
Example in [[C Sharp (programming language)|C#]].
==See also==▼
<syntaxhighlight lang="csharp">
[[Interval (mathematics)|Interval]]▼
public record Range<T>(T Start, T End) where T : IComparable;
</syntaxhighlight>
Example in [[Kotlin (programming language)|Kotlin]].
<syntaxhighlight lang="kotlin">
data class Range<T: Comparable<T>>(val start: T, val end: T)
</syntaxhighlight>
Example in [[PHP]].
<syntaxhighlight lang="php">
readonly class Range<T> {
public function __construct(
public T $start,
public T $end,
) {}
}
</syntaxhighlight>
Example in [[Python (programming language)|Python]].
<syntaxhighlight lang="python">
from dataclasses import dataclass
@dataclass
class Range[T]:
start: T
end: T
</syntaxhighlight>
[[Rust (programming language)|Rust]] has a built-in range struct in the standard library in {{Mono|std::ops::Range}}.<ref>{{cite web |title=Range in std::ops - Rust |url=https://doc.rust-lang.org/std/ops/struct.Range.html |website=doc.rust-lang.org |access-date=17 October 2024}}</ref>
== Range as a operator ==
[[Rust (programming language)|Rust]] has the {{Mono|..}} and {{Mono|..{{=}}}} operators.
<syntaxhighlight lang="rust">
let heartwarming = "heartwarming!".to_string();
let warm = &heartwarming[5..9];
</syntaxhighlight>
[[Zig (programming language)|Zig]] also has the {{Mono|..}} operator.
<syntaxhighlight lang="zig">
// To iterate over consecutive integers, use the range syntax.
var sum: usize = 0;
for (0..5) |i| {
sum += i;
}
</syntaxhighlight>
As does [[C Sharp (programming language)|C#]],<ref>{{cite web|last1=BillWagner|access-date=2025-02-22|title=Explore ranges of data using indices and ranges - C#|url=https://learn.microsoft.com/en-us/dotnet/csharp/tutorials/ranges-indexes|date=14 November 2023|website=learn.microsoft.com}}</ref>
<syntaxhighlight lang="csharp">
string items[] = ["one","two","three","four"];
string first_three_items[] = items[0..2];
</syntaxhighlight>
[[F Sharp (programming_language)|F#]],<ref>{{cite web|access-date=2025-02-22|title=Range Operator|url=https://camilotk.github.io/fsharp-by-example/chapters/range-operator/|date=17 February 2023|website=F# by example}}</ref>
<syntaxhighlight lang="fsharp">
[1..4]
// Outputs: [1; 2; 3; 4]
</syntaxhighlight>
[[Kotlin (programming language)|Kotlin]],<ref>{{cite web|access-date=2025-02-22|title=Ranges and progressions - Kotlin|url=https://kotlinlang.org/docs/ranges.html#progression|website=Kotlin Help}}</ref>
<syntaxhighlight lang="kotlin">
for (i in 1..5) print(i)
</syntaxhighlight>
and [[Perl]].<ref>{{cite web|access-date=2025-02-22|title=perlop - Perl expressions: operators, precedence, string literals - Perldoc Browser|url=https://perldoc.perl.org/perlop#Range-Operators|website=perldoc.perl.org}}</ref>
<syntaxhighlight lang="perl">
for( 1..5) { print }
</syntaxhighlight>
[[Python (programming language)|Python]] and [[PHP (programming language)|PHP]] does not have any range operator but they do have a {{Code|range}} function.<ref>{{cite web |title=Built-in Functions |url=https://docs.python.org/3/library/functions.html#func-range |website=Python documentation |publisher=Python Software Foundation |access-date=17 December 2024 |language=en}}</ref><ref>{{cite web |title=PHP: range - Manual |url=https://www.php.net/manual/en/function.range.php |publisher=The PHP Documentation Group |access-date=17 December 2024}}</ref>
▲== See also ==
▲* [[Interval (mathematics)|Interval]]
== References ==
{{Reflist}}
{{DEFAULTSORT:Range (Computer Science)}}
[[Category:
[[Category:Articles with example PHP code]]
[[Category:Articles with example Python (programming language) code]]
[[Category:Articles with example Rust code]]
[[Category:Arrays]]
[[Category:Programming constructs]]
{{Compu-prog-stub}}
|