Scala: Как “сохранить” функцию в var?

django.views.generic.list_detail.object_list - Это обеспечивает всю логику & переменные шаблона для разбиения на страницы (одна из тех I've-written-that-a-thousand-times-now тяжелых работ). Обертывание это допускает любую логику, в которой Вы нуждаетесь. Этот драгоценный камень сохранил меня много часов отладки ошибок диапазона на моих страницах "Search Results" и заставляет представление кодировать инструмент для очистки в процессе.

7
задан Damian 23 October 2009 в 03:11
поделиться

2 ответа

Тип примечания «() => Любой» не совпадает с параметром по имени «=> Любой». Тип «() => Any» - это функция, которая не принимает параметров и возвращает Any, тогда как параметр по имени «=> Any» задерживает выполнение параметра до тех пор, пока он не будет использован, и вернет Any.

Итак, что вам нужно сделать вот следующее:

var action: () => Any = null

def setAction(act: => Any) = action = () => act

setAction(println("hello")) // does not print anything

action() // prints "hello"

setAction(123)

action() // returns 123
15
ответ дан 6 December 2019 в 11:49
поделиться

Я думаю, что ваше объявление параметра неверно. Вероятно, это то, что вам нужно, если вы просто хотите сохранить функцию в переменной для дальнейшего использования:

def setAction(act:() => Any) {
    action = act 
}

, а затем:

scala> def p() { println("hi!") }
p: ()Unit

scala> setAction(p)

scala> action()
hi!
res2: Any = ()
2
ответ дан 6 December 2019 в 11:49
поделиться
Другие вопросы по тегам:

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