Size: a a a

2021 April 12

M(

MIT/Yardanico (alt) in ru.nim.talks
так toOpenArray сам по себе
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
но тогда тебе нужны views
источник

A

Alexander in ru.nim.talks
я не знал про toOpenArray, спрашивал не так давно в en чате, так что-то странно предлагали
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
и да, с views есть borrow чекер
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
{.experimental: "views".}

proc retSlice(data: string): openArray[char] =
 result = data.toOpenArray(0, 3)

var globalData = ""

proc main =
 let str = "hello world"

 let slice = str.retSlice()

 globalData[0] = slice[0]

main()


это не скомпилится
источник

A

Alexander in ru.nim.talks
так, я не понял, а зачем view с копированием?
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
/home/dian/Stuff/test/code.nim(11, 7) Error: 'slice' borrows from location 'str' which does not live long enough
источник

VB

Vladimir Berezenko in ru.nim.talks
а что там за тип будет? openArray[char]?
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
да
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
но нужны views, как я и сказал
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
а чтоб без views и без копирования, но unsafe - через каст
источник

VB

Vladimir Berezenko in ru.nim.talks
а правильно каст как?
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
cast[seq[char]](моястрока)
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
но это нужно будет везде писать
источник

VB

Vladimir Berezenko in ru.nim.talks
Хм, а они по типу совпадают-же?
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
т.к seq и строки - value типы
источник

VB

Vladimir Berezenko in ru.nim.talks
по структуре в смысле
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
да, у строк и последовательностей внутри одинаковая структура
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
internal detail :)
источник

A

Alexander in ru.nim.talks
но всё же отдельного view для строк нету
источник