Size: a a a

2020 September 13

Г

Герман in F# Chat
Vladimir Lozhnikov
привет
а нет ли у команды в планах реализовать удобную свифтовскую штукотень для чтения элементов кортежа по их порядковым номерам,

вот что я имею ввиду. в свифте можно делать так

let tuple = (1, "a", 2.0)
tuple.0 // 1
tuple.1 // "a"
tuple.2 // 2.0

знаю, что в фшарпе делают так

let (a, b, c) = (1, "a", 2.0)

но тем не менее
вообще, ты можешь написать экстеншен метод для туплей себе)
источник

Г

Герман in F# Chat
правда .0 не сможешь, ток .[0]
источник

VL

Vladimir Lozhnikov in F# Chat
это будет работать через рефлексию. что не гут
источник

AH

Ayrat Hudaygulov in F# Chat
я вот видел где-то в недрах FSharpPlus перегрузки fst/snd на тупли любого размера
источник

Г

Герман in F# Chat
не
источник

AH

Ayrat Hudaygulov in F# Chat
Vladimir Lozhnikov
это будет работать через рефлексию. что не гут
не, srtp же
источник

АВ

Андрей Вилинский... in F# Chat
так а чо у нас же еще Item1, Item10, итп есть
источник

Г

Герман in F# Chat
тем более)
источник

ЕБ

Евгений Бурмистров... in F# Chat
Андрей Вилинский
так а чо у нас же еще Item1, Item10, итп есть
звучит как оно самое
источник

VL

Vladimir Lozhnikov in F# Chat
если делать как .0, .1, .2, то это можно реализовать только через рефлексию
источник

Г

Герман in F# Chat
а с .[0], .[1], .[2] уже нет)
источник

Г

Герман in F# Chat
хотя
источник

VL

Vladimir Lozhnikov in F# Chat
но речь шла не о .[0], а о .0
источник

AH

Ayrat Hudaygulov in F# Chat
Vladimir Lozhnikov
если делать как .0, .1, .2, то это можно реализовать только через рефлексию
ну не, можно сделать копипастой
type Tuple<_,_> with
 member _.`0` = ...
 member _.`1` = ...

type Tuple<_,_,_> with
 member _.`0` = ...
 member _.`1` = ...
 member _.`2` = ...

type Tuple<_,_,_,_> with
 member _.`0` = ...
 member _.`1` = ...
 member _.`2` = ...
 member _.`3` = ...
источник

AH

Ayrat Hudaygulov in F# Chat
ИЗИ
источник

ЕБ

Евгений Бурмистров... in F# Chat
Ayrat Hudaygulov
ну не, можно сделать копипастой
type Tuple<_,_> with
 member _.`0` = ...
 member _.`1` = ...

type Tuple<_,_,_> with
 member _.`0` = ...
 member _.`1` = ...
 member _.`2` = ...

type Tuple<_,_,_,_> with
 member _.`0` = ...
 member _.`1` = ...
 member _.`2` = ...
 member _.`3` = ...
во-первых, ловите наркомана
во-вторых, красиво
источник

Г

Герман in F# Chat
эх, вот бы Vect: Nat -> Type -> Type...
источник

VL

Vladimir Lozhnikov in F# Chat
это частный случай для

let tuple = (1,2,3)

а если я хочу любое другое имя? например

let blablabla = (1,2,3)
источник

AH

Ayrat Hudaygulov in F# Chat
Vladimir Lozhnikov
это частный случай для

let tuple = (1,2,3)

а если я хочу любое другое имя? например

let blablabla = (1,2,3)
ActivePattern!
источник

AH

Ayrat Hudaygulov in F# Chat
let (|blablabla|) = ...
источник