Java, 3 точки в параметрах

Повторите запрос user822711 для повторного использования:

  $.singleDoubleClick = function(singleClk, doubleClk) {
    return (function() {
      var alreadyclicked = false;
      var alreadyclickedTimeout;

      return function(e) {
        if (alreadyclicked) {
          // double
          alreadyclicked = false;
          alreadyclickedTimeout && clearTimeout(alreadyclickedTimeout);
          doubleClk && doubleClk(e);
        } else {
          // single
          alreadyclicked = true;
          alreadyclickedTimeout = setTimeout(function() {
            alreadyclicked = false;
            singleClk && singleClk(e);
          }, 300);
        }
      }
    })();
  }

Вызовите функцию.

$('td.dblclickable').bind('click', $.singleDoubleClick(function(e){
  //click.
}, function(e){
  //double click.
});
748
задан Adarsh H S 29 April 2013 в 07:05
поделиться

3 ответа

Это означает, что ноль или более объектов String (или их массив) могут быть переданы в качестве аргумента (ов) для этого метода.

См. Раздел «Произвольное количество аргументов» здесь: http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html#varargs

В вашем примере вы можно было бы назвать его одним из следующих способов:

myMethod(); // Likely useless, but possible
myMethod("one", "two", "three");
myMethod("solo");
myMethod(new String[]{"a", "b", "c"});

Важное примечание: Аргумент (ы), переданный таким образом, всегда является массивом - даже если он всего один. Убедитесь, что вы относитесь к нему таким образом в теле метода.

Важное примечание 2: Аргумент, который получает ... , должен быть последним в сигнатуре метода. Итак, myMethod (int i, String ... strings) в порядке, но myMethod (String ... strings, int i) не подходит.

Спасибо Вашу за разъяснения в его комментарии.

932
ответ дан 22 November 2019 в 21:22
поделиться

Эта функция называется varargs , и это функция, представленная в Java 5. Это означает, что функция может получать несколько аргументов String :

myMethod("foo", "bar");
myMethod("foo", "bar", "baz");
myMethod(new String[]{"foo", "var", "baz"}); // you can even pass an array

Затем вы можете использовать String var как массив:

public void myMethod(String... strings){
    for(String whatever : strings){
        // do what ever you want
    }

    // the code above is is equivalent to
    for( int i = 0; i < strings.length; i++){
        // classical for. In this case you use strings[i]
    }
}

Этот ответ в значительной степени заимствован из ответов кисвы и Лоренцо ... а также из комментария Графейна.

116
ответ дан 22 November 2019 в 21:22
поделиться

Это способ Java передать varargs (аргументы с переменным числом).

Если вы знакомы с C, это похоже на синтаксис ... , в котором используется функция printf :

int printf(const char * format, ...);

, но безопасным для типов способом: каждый аргумент имеет для соответствия указанному типу (в вашем примере они должны быть все String ).

Это простой пример использования varargs :

class VarargSample {

   public static void PrintMultipleStrings(String... strings) {
      for( String s : strings ) {
          System.out.println(s);
      }
   }

   public static void main(String... args) {
      PrintMultipleStrings("Hello", "world");
   }
}

Аргумент ... на самом деле является массивом, поэтому вы можете передать String [ ] в качестве параметра.

12
ответ дан 22 November 2019 в 21:22
поделиться
Другие вопросы по тегам:

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