juan_gandhi: (VP)
[personal profile] juan_gandhi
Я сегодня провёл интересный день, пытаясь с помощью манифестов, тайптагов, верёвки и палки и такой-то цюрихской божией матери сделать так, чтобы вот если какая-то там джава, номинально возвращающая Object, мне вернула в качестве ответа Array[Array[(String, String)]], то я бы лихо отличил его от Array[String], ну если не через match/case, так через =:=, <:<, T : TypeTag и т.п.

Понял наконец, что это смешно.

Если вернули пустой массив, то не отличу. И если вернули... нет, лучше так, если у меня списки ленивые, то всяко не отличу.

Вот в общем виде: есть type Fruit = Apple | Orange, и есть список фруктов, и давайте матчить весь список. Это ж не решается.

Уже не говоря о том, что данные-то в риалтайме откуда-то прибегают; вот, скажем, у нас такой весь из себя type-safe JSON, берёт что-то с интернетов, и чо? А нам вдруг прислали зип-файл, или джейсон с половиной тела (это цитата из русских бизнесменов 90-х); так и чо. Нет, ладно, джейсон конечен и познаваем. Но не ленивый же список. И не все джейсоны, что придут нашей аппликации от её старта до её успешного окончания.

С ним, со списком, надо иначе.

Вот и всё. Ну типа там... подумать надо.
    stack.pop match {
      case l:List[_] => {
        val list: List[(String, String)] = l collect { case (p0:String, p1:String) => (p0, p1) }
...

Date: 2013-04-30 03:28 am (UTC)
From: [identity profile] nivanych.livejournal.com
Ужасы какие...

Date: 2013-04-30 07:22 am (UTC)
From: [identity profile] sassa-nf.livejournal.com
хм, а генерики где-то в рантайме можно определить для каждого объекта?

Date: 2013-04-30 07:23 am (UTC)
From: [identity profile] xeno-by.livejournal.com
в дотнете?

Date: 2013-04-30 08:17 am (UTC)
From: [identity profile] nivanych.livejournal.com
Я в более общем смысле — такие вот определения типов, это ненормально.
А уж что с этим можно поделать, зависит от.
В данном случае, приходится прибегать к извратам.

Date: 2013-04-30 06:58 am (UTC)
From: [identity profile] xeno-by.livejournal.com
А с Джавой интеропиться обязательно?

Date: 2013-04-30 05:31 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
На самом деле не с джавой, а с браузером.
Но я думаю, я что-нибудь сделаю для чистоты типов в этом случае, на самом деле. Чтоб сразу знать, что браузер может вернуть, а что нет.

Date: 2013-04-30 05:33 pm (UTC)
From: [identity profile] xeno-by.livejournal.com
Если браузерные объекты приходят из Скалы (в плане, вначале их создает сервер, а потом отправляет на сторону клиента), то, может, к ним можно присобачить теги и потом их юзать, когда данные перетекают обратно на сервер?
Edited Date: 2013-04-30 05:34 pm (UTC)

Date: 2013-04-30 05:36 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Они приходят из браузера; но я планирую сделать так. Вот есть какая-нибудь функция, которая выполняется в браузере; ну так я же, генерируя её, могу ей точно сказать, какого формата мне нужен результат; и на приёмной части точно так же могу преобразовать, чтобы на выходе уже получать нужный код. И куски скриптов, соответственно, буду иметь тип.

Date: 2013-04-30 09:48 am (UTC)
From: [identity profile] vit-r.livejournal.com
Вот в общем виде: есть type Fruit = Apple | Orange, и есть список фруктов, и давайте матчить весь список. Это ж не решается.

Пустое это. Надо просто перед едой проверять счищается ли кожура или можно есть так.

Date: 2013-04-30 05:37 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
А, вот именно. Забыл уже этот трюк - реагировать на вещи по мере поступления. Спасибо за напоминание.

Date: 2013-04-30 09:13 pm (UTC)
From: [identity profile] http://users.livejournal.com/_windwalker_/
Но ведь в яблоке кожура потенциально очищается, но можно есть и так ?

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

June 2025

S M T W T F S
1 2345 6 7
8 9 10 11 121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 17th, 2025 05:26 pm
Powered by Dreamwidth Studios