@Fsharp_chat

Страница 74 из 772
Nikolay
26.04.2017
05:15:42
Не, это не конкретно мне, мне это не нужно сейчас

Pavel
26.04.2017
05:15:43
или сделать { createMessage param1 param2 with optionalParam3 = "blah" } |> sendMessage

можно принимать лямбду, которая настраивает опять же

Nikolay
26.04.2017
05:17:44
И всё равно, не думаю что этот вариант сильно лучше static member

Google
Pavel
26.04.2017
05:18:32
А как ты static member каррировать хочешь, кстати?

Там же кортеж параметров передается

опять же, с выводом типов сложнее становится

Nikolay
26.04.2017
05:21:38
Ну да, его тоже не получится каррировать

Evgeniy
26.04.2017
05:39:14
@the_RAMZAY В VS2017 скоро появится отображение сигнатур, как в vscode.

Akhmed
26.04.2017
07:01:06
Evgeniy
26.04.2017
07:01:38
https://twitter.com/kot_2010/status/857104781789278210

Akhmed
26.04.2017
07:03:21
? этого очень сильно не хватало в VS

Nikolay
26.04.2017
07:09:15
Ещё бы поддержку .Net Core завезли)

Vasily
26.04.2017
07:12:18
Завезут,но потом, думаю

Вроде как в рефлекшн все упирается

Nikolay
26.04.2017
07:19:37
Ещё раз спрошу :) Как лучше сделать функцию, которая принимает 8 аргументов, из которых 5 - опциональны? Пока сделал через static member, но я так понимаю это не лучший вариант

Pavel
26.04.2017
07:21:24
Я же уже ответил

Google
Nikolay
26.04.2017
07:22:43
Ну интересует мнение остальных, способы, которыми сделать такую штуку вижу, но какой лучше использовать?

Pavel
26.04.2017
07:23:39
Ну даже в обычном императивном программинге не рекомендуется иметь функции с тремя и более параметрами

Вероятно - семантика неправильная.

Vasily
26.04.2017
07:25:13
Если много параметров, их можно завернуть в отдельный класс

Nikolay
26.04.2017
07:28:11
Типа такие варианты (код может быть кривой, но смысл думаю понятен) let test a b c (d: int option) (e: int option) (f: int option) (g: int option) (h: int option) static member test (a, b, c, ?d, ?e, ?f, ?g, ?h) let test (a: SomeType)

Vasily
26.04.2017
07:28:28
Ну заверни в рекорд

Не придумывай ты проблем на ровном месте

Vlad
26.04.2017
07:29:09
промежуточный класс тут надо

Vasily
26.04.2017
07:29:22
Ну и не совсем понятен контекст разработки, из которого родилась подобная сигнатура

Vasily
26.04.2017
07:30:06
Ну это внешний интерфейс

Vasily
26.04.2017
07:30:26
Я бы по-другому сделал

Тут паттерн Builder хорошо ложится

Vlad
26.04.2017
07:37:48
или тип с n конструкторами

Artemko
26.04.2017
07:39:13
Чем рекорд с опциями плох?

Nikolay
26.04.2017
07:40:17
Тут паттерн Builder хорошо ложится
Ты про workflows? Или как они там называются

Roman
26.04.2017
07:43:56
https://m.hh.ru/vacancy/20361382

Google
Летучая
26.04.2017
07:47:29
??

Алексей
26.04.2017
07:47:41
Not bad

Nikolay
26.04.2017
07:48:09
Остаётся ещё один вопрос)

Есть методы, у которых 2-3 одинаковых параметра, как лучше их сделать?

Nikolay
26.04.2017
07:48:52
Через тип, или обычные аргументы функции?

https://core.telegram.org/bots/api#getchatmember

Вот такие

Вроде нормальный вариант через простые аргументы функции, не уверен только насколько это хорошо, когда часть методов принимает тип, а часть просто аргументы

Roman
26.04.2017
07:53:08
Да, наверное так и буду делать
Есть вариант ещё типа fable way(но в обычном f# может быть сомнительным): делаешь DU с параметрами типа type BlaBlaOptions = | OptionOne of int | OptionTwo of String ... | OptionN (для булевых например) и let myFunc (options:BlaBlaOptions list) = Тут проверять список и настраивать)

myFunc [OptionOne(1) ;OptionTwo("1")]

Nikolay
26.04.2017
07:54:19
Мне кажется это менее удобный вариант

Roman
26.04.2017
07:54:28
ChatId прям просится в отдельный тип type ChatId = | StringId of string | IntId of int with static member Create(id:string) = StringId(id) with static member Create(I'd:int) = IntId(id )

Vasily
26.04.2017
07:59:12
Тогда уж private |StringId

Шоб наружу не светился

Roman
26.04.2017
07:59:34
Не понял

Vasily
26.04.2017
07:59:47
Ну если этот класс наружу выставлять

Google
Vasily
26.04.2017
07:59:57
То в с# будет весело

Roman
26.04.2017
08:00:11
Поправил код

Я так понимаю либа для F#) Для с# отдельный модуль с обёртками же

Nikolay
26.04.2017
08:05:49
Либу пишу онли F#

Для C# есть парочка таких, обойдутся)

Roman
26.04.2017
08:07:21
Алексей
26.04.2017
08:07:33
Create(I'd:int) это опечатка?

Nikolay
26.04.2017
08:07:40
sendMessageAsync { chatId: ChatId.Create(mychat.Id) }

Roman
26.04.2017
08:07:44
Алексей
26.04.2017
08:08:29
Спасибо

Nikolay
26.04.2017
08:08:36
mychat: Chat, в Chat - id всегда int

Roman
26.04.2017
08:08:43
sendMessageAsync { chatId: ChatId.Create(mychat.Id) }
Нельзя сделать inline ф-цию?

Nikolay
26.04.2017
08:09:03
Вообще в почти всегда ChatId - int, в редких случаях он string

Roman
26.04.2017
08:11:18
ещё ф-цию createId id = IntId(id) Для string такую же, но с суффиксом str

Nikolay
26.04.2017
08:11:46
Нельзя сделать inline ф-цию?
Но его уже в type не засунешь получается

Roman
26.04.2017
08:12:22
да, оно надо?)

Nikolay
26.04.2017
08:12:56
да, оно надо?)
https://core.telegram.org/bots/api#editmessagereplymarkup

Roman
26.04.2017
08:13:00
Но его уже в type не засунешь получается
Я правда хз можно ли сделать инлайн ф-уже

Nikolay
26.04.2017
08:13:42
Как тогда эта функция будет выглядеть?)

Google
Roman
26.04.2017
08:14:07
https://core.telegram.org/bots/api#editmessagereplymarkup
все ещё не понимаю о чем ты

Vasily
26.04.2017
08:14:19
Короче

Roman
26.04.2017
08:14:21
Vasily
26.04.2017
08:14:45
Integer or string в документации всего лишь значит, что выбор типа данных на откуп разработчику

Имхо

Nikolay
26.04.2017
08:15:10
Ну оно всегда всё равно в string преобразуется

Vasily
26.04.2017
08:15:20
Ну и катай его стрингой

Nikolay
26.04.2017
08:15:41
Но, в типах в основном используется int

Vasily
26.04.2017
08:15:56
Тогда в твоих апи должен быть int

И катай его интом

Nikolay
26.04.2017
08:16:39
Но в качестве Id может быть строка вида: afa4sLZozc123fL

Vasily
26.04.2017
08:17:07
Ну в типах же ты его не сможешь использовтаь

Тогда и в типах строка

Алексей
26.04.2017
08:17:17
Но, в типах в основном используется int
Я бы оставил стринг и переводил в инт только если очень требуется в конкретные методах

Nikolay
26.04.2017
08:18:41
Там string если я не ошибаюсь, используется только для Id'ов inline сообщений

Короче ладно, что-нибудь придумаю

Max
26.04.2017
09:31:37
Как можно наиболее удобно прогать на F# в vsCode ?

какие там есть фишечки, если кто знает, мб поделились бы?

Nikolay
26.04.2017
09:33:10
А так хз что ещё

Max
26.04.2017
09:33:32
А так хз что ещё
а компилить и запускать как?

Nikolay
26.04.2017
09:34:08
а компилить и запускать как?
Там же, отдельное расширение ставишь

Страница 74 из 772