добавление :_*
говорит компилятору обрабатывать массив как varargs. Он работает так же со Scala, как и с Java. Если у меня есть метод
def foo(args: Int*) = args.map{_ + 1}
, я могу назвать его так:
foo(1, 2, 3, 4) //returns ArrayBuffer(2, 3, 4, 5)
, но если я хочу передать ему фактическую последовательность (как у вас с getMethod
) Я бы сделал:
val mylist = List(1, 2, 3, 4)
foo(mylist:_*)
Да ... Как и большинство языков, JavaScript требует, чтобы символы были уникальными в пределах их области действия. В JavaScript, если вы создаете несколько определений для функции в заданной области видимости, то «выигрывает» последнее, которое будет определено - это будет выглядеть так, как будто предыдущих определений никогда не существовало.
Что вам нужно сделать, чтобы Чтобы ваша избыточная функция pageLoad
работала, нужно использовать метод Sys.Application.add_load ()
. С его помощью вы можете прикрепить столько обработчиков, сколько хотите, к событию загрузки страницы. Более того, вы можете использовать анонимную функцию для добавления в метод add_load
. Это гарантирует вам отсутствие опасности для обработчиков с повторяющимися именами. Пример:
StringBuilder sb = new StringBuilder();
sb.Append("Sys.Application.add_load(");
sb.Append("function() { alert('page load'); });");
ClientScript.RegisterStartupScript(this.GetType(), "Page_Load", sb.ToString(), true);
Вы также можете легко использовать Sys.Application.add_load
на стороне клиента, вы даже можете добавить один и тот же обработчик более одного раза. В результате одна и та же функция будет срабатывать несколько раз :)
Я не согласен с Shog9 ...
Я знаю, что можно иметь несколько вызовов $ (document) .ready (f (n)) в одном документе, каждый из которых вызывается по очереди, когда DOM завершает загрузку. Я не верю, что многократные вызовы ClientScript.RegisterStartupScript () также вызывают какие-либо проблемы.