Действительно ли возможно определить тип возврата анонимной функции в Scala?

Если я правильно понял ваш вопрос, вы хотите использовать Integrity Sub Resource для скриптов, на которые ссылается через require js. Обратите внимание, что для этого вам потребуется RequireJS версии 2.1.19 или новее (см. http://requirejs.org/docs/download.html ).

Для рабочего примера (ссылка на jQuery) см. этот плункер: http://plnkr.co/edit/kzqLjUThJRtoEruCCtMt?p=preview . Надеемся, вы сможете копировать этот метод в свой проект.

В моем примере используются атрибуты целостности / crossorigin для:

  • RequireJS (через файл index.html)
  • jQuery (через конфигурационный файл main.js и интересная вещь для вас)

Это построено на крюке RequireJS onNodeCreated и в коде, например

onNodeCreated: function(node, config, module, path) {
    node.setAttribute('integrity', integrityForModule);
    node.setAttribute('crossorigin', 'anonymous');
}

Обратите внимание, что в этом примере НЕ используется SRI для файла конфигурационного файла main.js. Для этого либо

  • включают конфигурацию RequireJS inline на странице index.html
  • ... или ссылку main.js (файл конфигурации) через дополнительный тег скрипта (с целостностью / кроссовером), а не через атрибут data-main

22
задан Jim Ferrans 19 January 2010 в 01:20
поделиться

3 ответа

На мой взгляд, если вы пытаетесь сделать все более ясно, лучше документировать ожидание на идентификаторе X, добавив аннотацию типа, а не результат функции.

val x: () => Long = () => System.currentTimeMillis

Затем компилятор гарантирует, что функция на правой стороне соответствует этой ожидании.

29
ответ дан 29 November 2019 в 00:42
поделиться

Фабиан дал простой путь, но некоторые другие способы, если вам нравится микроуправление сахаром, включают:

val x = new (() => Long) {
  def apply() = System.currentTimeMillis
}

или

val x = new Function0[Long] {
  def apply() = System.currentTimeMillis
}

или даже

val x = new {
  def apply(): Long = System.currentTimeMillis
}

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

9
ответ дан psp 29 November 2019 в 00:42
поделиться
val x = () => { System.currentTimeMillis } : Long
50
ответ дан 29 November 2019 в 00:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: