Size: a a a

Clojure — русскоговорящее сообщество

2020 July 17

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Aleksey @cheatex
В идее ворнинг был, его можно поднять в ранг еррора в нстройках. хз что там по линтерам, я лет 7 как не настоящий сваршик.
Идея вообще такое ощущение, что никак с компилятором не общается, я ворнинг поднял в эррор
источник

DM

Dmitry M in Clojure — русскоговорящее сообщество
Добрый день
подскажите, пожалуйста, что значит ^. Например тут (^java.awt.image.BufferedImage [width height]
   (new-image width height true))
источник

Д

Диёр in Clojure — русскоговорящее сообщество
type hints
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Тайпкаст
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Диёр
type hints
Точнее вот
источник

Д

Диёр in Clojure — русскоговорящее сообщество
явно компилятору указываешь что ты хочешь здесь сделать + ide это тоже кушает и помогает
источник

DM

Dmitry M in Clojure — русскоговорящее сообщество
ок. Спасибо
источник

A

Artem in Clojure — русскоговорящее сообщество
Dmitry M
Добрый день
подскажите, пожалуйста, что значит ^. Например тут (^java.awt.image.BufferedImage [width height]
   (new-image width height true))
А еще код быстрее исполняется.  Обычно часто используемые участки так оптимизируют.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Artem
А еще код быстрее исполняется.  Обычно часто используемые участки так оптимизируют.
нет, от расстановки хинтов код быстрее в общем случае не становится

https://clojure.org/reference/java_interop#typehints

the compiler will track the use of any return values and infer types for their use and so on, so very few hints are needed to get a fully compile-time resolved series of calls
источник

A

Artem in Clojure — русскоговорящее сообщество
Эмм, интересно. А зачем они нужны вообще?
источник

A

Artem in Clojure — русскоговорящее сообщество
Во многих либах встречал.  Особенно на уровне интеропа.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
http://clojure-doc.org/articles/language/functions.html

Type hints sometimes allow the compiler to avoid reflective method calls and/or produce significantly more efficient bytecode. However, as a rule of thumb, it is usually not necessary to use type hints. Start writing your code without them. The compiler is also free to ignore provided hints.
источник

A

Artem in Clojure — русскоговорящее сообщество
Sergey Trofimov
http://clojure-doc.org/articles/language/functions.html

Type hints sometimes allow the compiler to avoid reflective method calls and/or produce significantly more efficient bytecode. However, as a rule of thumb, it is usually not necessary to use type hints. Start writing your code without them. The compiler is also free to ignore provided hints.
Ну вот на основе этой доки я и считал что это оптимизация. Рефлексия не бесплатная.
источник

Д

Диёр in Clojure — русскоговорящее сообщество
Artem
Во многих либах встречал.  Особенно на уровне интеропа.
явно указать какой тип
на уровне интеропа может жаба попросить в reify
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Artem
Ну вот на основе этой доки я и считал что это оптимизация. Рефлексия не бесплатная.
ну просто в основном код пишется без рефлексий и хинты ничего не дадут
к тому же хинт у параметров вроде генерит кастинг в рантайме, и это может оказаться медленнее, чем без хинта (не помню, откуда у меня эта мысль, пруф по быстрому не нашёл)
источник

KR

Kostyantin Randomnam... in Clojure — русскоговорящее сообщество
Dmitry M
Добрый день
подскажите, пожалуйста, что значит ^. Например тут (^java.awt.image.BufferedImage [width height]
   (new-image width height true))
тут тайпхинт, вообще можно так метадату цеплять к обьектам
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
к сожалению бывают варианты, когда рефлексия или боксинг есть, но компилятор ворнинги не сгенерит. Это касается композиции функций через comp и partial, например
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Dmitry M
Добрый день
подскажите, пожалуйста, что значит ^. Например тут (^java.awt.image.BufferedImage [width height]
   (new-image width height true))
Рекомендую в закладки https://clojure.org/guides/weird_characters
источник

A

Artem in Clojure — русскоговорящее сообщество
источник

A

Artem in Clojure — русскоговорящее сообщество
источник