Size: a a a

2020 August 12

PD

Prunkles Dreemurr in F# Chat
Тогда тип для a выведется как Func<..., unit>
источник

AH

Ayrat Hudaygulov in F# Chat
Gleb
а куда тут добавить Console.WriteLine("Perform") чтоб понять что он вызвался ?
в интерфейс никуда. в реализацию добавляй 🙂
источник

AH

Ayrat Hudaygulov in F# Chat
реализация у тебя неправильная просто.
там интерфейс же с генерик параметром, а у тебя без
источник

AH

Ayrat Hudaygulov in F# Chat
Ну и Perform должен возвращать значение такого же типа как и генерик параметр, а у тебя там Unit
источник

PD

Prunkles Dreemurr in F# Chat
Ayrat Hudaygulov
реализация у тебя неправильная просто.
там интерфейс же с генерик параметром, а у тебя без
Там не интерфейс дженерик, а только один метод
источник

AH

Ayrat Hudaygulov in F# Chat
Prunkles Dreemurr
Там не интерфейс дженерик, а только один метод
а, и правда.
источник

G

Gleb in F# Chat
Ayrat Hudaygulov
реализация у тебя неправильная просто.
там интерфейс же с генерик параметром, а у тебя без
ну вот сложность написать метод-реализацию в классе/объекте под этот тип/интерфейс
источник

G

Gleb in F# Chat
Prunkles Dreemurr
Попробуй member this.Perform(a) : unit = ...
ругается
источник

R

Roman in F# Chat
дак сигнатуры разные
источник

PD

Prunkles Dreemurr in F# Chat
А, ну да. Интерфейс же требует реализовать дженерик метод, а ты реализуешь с конкретным типом. Такое и в шарпах не получилось бы
источник

R

Roman in F# Chat
в интерфейсе возвращается женерик, а Console.WriteLine() возвращает юнит
источник

R

Roman in F# Chat
@glebpw а еще есть такая штука как object expressions для кейсов как у тебя — когда от типа требуется только имплементация интерфейса

https://fsharpforfunandprofit.com/posts/object-expressions/
источник

AH

Ayrat Hudaygulov in F# Chat
Gleb
ругается
источник

AH

Ayrat Hudaygulov in F# Chat
ох уж этот интеропчик
источник

PD

Prunkles Dreemurr in F# Chat
Gleb
Здравствуйте, я уже несколько недель в перерывах читаю Tour of F# и сегодня решился написать первое приложение, (собрать данные со своей учётки вк) сперва всё было круто пока не вылезла капча... для её обработки нужно написать класс с таким интерфейсом :
  public interface ICaptchaHandler
 {
   int MaxCaptchaRecognitionCount { get; set; }
   T Perform<T>(Func<ulong?, string, T> action);
 }
уже полдня пытаюсь разобраться с этим пазлом,
тут вроде в метод передаётся функция и всё, но и возвращается что-то должно и не пойму что за тип а, откуда его выводить...
Program.fs(19, 13): [FS0001] В данном выражении требовалось наличие типа  "'a"
Конкретно в данном случае, так как нужно вернуть 'a, то можно либо очень плохо:
member this.Perform(f) =
 printfn "Perform"
 Unchecked.defaultOf<'a>

, что может вызвать UB со стороны вызывающего кода
Либо всё такие вызвать принятую из аргументов функу, передав какие-то случайные значения (если требуется просто проверить, работает ли):
member this.Perform(f) =
 printfn "Perform"
 f.Invoke(Nullable 0UL, "asdfasdf")
источник

PD

Prunkles Dreemurr in F# Chat
Ayrat Hudaygulov
ох уж этот интеропчик
Дык на сишарпе точно так же пришлось бы писать, какой интеропчик
источник

G

Gleb in F# Chat
класс, круто, заработало,
благодарю🔥
источник

G

Gleb in F# Chat
а подскажите пожалуйста ещё как экранировать системные слова, если они нужно в JSON http запросах
источник

VK

Vladislav Khapin in F# Chat
``
источник

оГ

отец Григорий... in F# Chat
Слева и справа :)
источник