Size: a a a

2021 February 15

G

Gabben in ru.nim.talks
MIT/Yardanico (alt)
в стандартной библиотеке не юзается, но свои операторы можно делать
А для seq?
источник

T

Tverd in ru.nim.talks
хм.. это же последовательности
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
Gabben
А для seq?
а, ты про это
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
оно есть, но как бы у нима есть различие по типам
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
язык всё-таки не динамический
источник
2021 February 16

G

Gabben in ru.nim.talks
баг или мне "просто нужно подумать"?
https://play.nim-lang.org/#ix=2PAG
источник

VB

Vladimir Berezenko in ru.nim.talks
такое впечатление что ему не нравится enum в рантайме полученый при полной инициализации. на баг похоже.
источник

G

Gabben in ru.nim.talks
то есть должен выдавать Error: cannot prove that it's safe to initialize 'oneBranch' with the runtime value for the discriminator 'kind'?
источник

VB

Vladimir Berezenko in ru.nim.talks
Наверное. Такое впечатление что он енум внезапно воспринял как int, т.к. у нима бранчи могут быть только short int размера максимум.
источник

G

Gabben in ru.nim.talks
придется генерировать такой код
test = Test(kind: ...)
test.firstBranch = ...
источник

VB

Vladimir Berezenko in ru.nim.talks
я где-то видел что такой вариант даже рекомендован.
источник

G

Gabben in ru.nim.talks
Gabben
придется генерировать такой код
test = Test(kind: ...)
test.firstBranch = ...
ага, а если у нас вложенные кейсы, то это перестает работать
источник

G

Gabben in ru.nim.talks
источник

G

Gabben in ru.nim.talks
ладно, представим, что вложенные кейсы не нужны
источник

VB

Vladimir Berezenko in ru.nim.talks
К - Костыль! :)
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
Gabben
ага, а если у нас вложенные кейсы, то это перестает работать
почему?
источник

G

Gabben in ru.nim.talks
MIT/Yardanico (alt)
почему?
если на месте ... будут не константы, а рантаймы, то будет ошибка cannot prove that it's safe to initialize  with the runtime value for the discriminator

t = Test(kind: kind, anotherKind: anotherKind) # ошибка
t = Test(kind: kind)
t.anotherKind = anotherKind # другая ошибка, но может работать с ARC
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
Да, с arc второе работает
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
И это не баг
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
Так было задумано
источник