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 //....
К настоящему времени это должно быть исправлено. Это можно закрыть.