V-lang показывает V-панику: ошибка индекса массива вне диапазона для правильной индексации массива после того, как V-паника встречалась один раз

Это новый язык программирования V-lang, созданный Алексеем Медведниковым. Я использую V-Lang версии 0.1.11 в настоящее время. Я могу объявить массив в V-lang, как показано ниже:

a := [1,2,3]
// or, mut a := [1,2,3]

Я пытался получить последний элемент этого массива, как:

>>> a := [1,2,3]
>>> println(a[-1])
V panic: array index out of range: -1/3
>>> println(a[a.len -1])
V panic: array index out of range: -1/3

Каждый раз это показывает:

V panic: индекс массива вне диапазона:

Теперь, сразу после этого, если я попытаюсь получить элементы из массива, то все равно будет показана та же ошибка:

>>> println(a[1])  
V panic: array index out of range: -1/3
>>> println(a.len)
V panic: array index out of range: -1/3

Где, как если бы мы попытались получить элементы из массива прежде, чем мы столкнулись V panic, он напечатал бы то же без ошибок, как свежий экземпляр в терминале:

>>> a := [1,2,3]
>>> println(a.len)
3
>>> println(a[1])
2

Почему V-lang показывает V panic для правильной индексации каждый раз после того, как мы сталкиваемся V panic заранее?

2 ответа

Это, вероятно, ошибка в V REPL. Вы можете подать вопрос здесь

В отличие от Python, V-lang не имеет этой функции для получения элементов из конца массива с отрицательными индексами

a := [1,2,3]
a[-1] //isn't valid

Официальная документация короткая и точная

mut nums := [1, 2, 3]
println(nums) // "[1, 2, 3]"
println(nums[1]) // "2" 

nums << 4
println(nums) // "[1, 2, 3, 4]"


nums << [5, 6, 7]
println(nums) // "[1, 2, 3, 4, 5, 6, 7]"

mut names := ['John']
names << 'Peter' 
names << 'Sam' 
// names << 10  <-- This will not compile. `names` is an array of strings. 
println(names.len) // "3" 
println('Alex' in names) // "false" 

// We can also preallocate a certain amount of elements. 
nr_ids := 50
ids := [0 ; nr_ids] // This creates an array with 50 zeroes 

 //....

К настоящему времени это должно быть исправлено. Это можно закрыть.

Другие вопросы по тегам