mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
arrays: use for/in instead of unsafe [direct_array_access]
(#8857)
This commit is contained in:
@ -6,46 +6,43 @@ module arrays
|
||||
// - merge - combine two sorted arrays and maintain sorted order
|
||||
|
||||
// min returns the minimum
|
||||
[direct_array_access]
|
||||
pub fn min<T>(a []T) T {
|
||||
if a.len == 0 {
|
||||
panic('.min called on an empty array')
|
||||
}
|
||||
mut val := a[0]
|
||||
for i in 0 .. a.len {
|
||||
if a[i] < val {
|
||||
val = a[i]
|
||||
for e in a {
|
||||
if e < val {
|
||||
val = e
|
||||
}
|
||||
}
|
||||
return val
|
||||
}
|
||||
|
||||
// max returns the maximum
|
||||
[direct_array_access]
|
||||
pub fn max<T>(a []T) T {
|
||||
if a.len == 0 {
|
||||
panic('.max called on an empty array')
|
||||
}
|
||||
mut val := a[0]
|
||||
for i in 0 .. a.len {
|
||||
if a[i] > val {
|
||||
val = a[i]
|
||||
for e in a {
|
||||
if e > val {
|
||||
val = e
|
||||
}
|
||||
}
|
||||
return val
|
||||
}
|
||||
|
||||
// idx_min returns the index of the first minimum
|
||||
[direct_array_access]
|
||||
pub fn idx_min<T>(a []T) int {
|
||||
if a.len == 0 {
|
||||
panic('.idxmin called on an empty array')
|
||||
panic('.idx_min called on an empty array')
|
||||
}
|
||||
mut idx := 0
|
||||
mut val := a[0]
|
||||
for i in 0 .. a.len {
|
||||
if a[i] < val {
|
||||
val = a[i]
|
||||
for i, e in a {
|
||||
if e < val {
|
||||
val = e
|
||||
idx = i
|
||||
}
|
||||
}
|
||||
@ -53,16 +50,15 @@ pub fn idx_min<T>(a []T) int {
|
||||
}
|
||||
|
||||
// idx_max returns the index of the first maximum
|
||||
[direct_array_access]
|
||||
pub fn idx_max<T>(a []T) int {
|
||||
if a.len == 0 {
|
||||
panic('.idxmax called on an empty array')
|
||||
panic('.idx_max called on an empty array')
|
||||
}
|
||||
mut idx := 0
|
||||
mut val := a[0]
|
||||
for i in 0 .. a.len {
|
||||
if a[i] > val {
|
||||
val = a[i]
|
||||
for i, e in a {
|
||||
if e > val {
|
||||
val = e
|
||||
idx = i
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,5 @@
|
||||
module arrays
|
||||
|
||||
import rand
|
||||
|
||||
fn test_min() {
|
||||
a := [8, 2, 6, 4]
|
||||
assert min<int>(a) == 2
|
||||
@ -54,24 +52,3 @@ fn test_merge() {
|
||||
assert merge<int>(a, c) == a
|
||||
assert merge<int>(d, b) == b
|
||||
}
|
||||
|
||||
fn test_fixed_array_assignment() {
|
||||
mut a := [2]int{}
|
||||
a[0] = 111
|
||||
a[1] = 222
|
||||
b := a
|
||||
assert b[0] == a[0]
|
||||
assert b[1] == a[1]
|
||||
mut c := [2]int{}
|
||||
c = a
|
||||
assert c[0] == a[0]
|
||||
assert c[1] == a[1]
|
||||
d := [3]int{init: 333}
|
||||
for val in d {
|
||||
assert val == 333
|
||||
}
|
||||
e := [3]string{init: 'vlang'}
|
||||
for val in e {
|
||||
assert val == 'vlang'
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user