JavaScript: возвратите функцию с предопределенными аргументами

В вашем примере вы обнаруживаете нарастающий фронт (штифт идет от низкого до высокого). Падение фронта противоположно, поэтому вы можете запустить отдельный обратный вызов с помощью:

GPIO.add_event_detect(17, GPIO.FALLING, callback=other_callback, bouncetime=600)

Однако я бы предложил вам использовать GPIO Zero вместо RPi. GPIO, как вам может показаться более интуитивным:

from gpiozero import InputDevice

sensor = InputDevice(17)

while True:
    sensor.wait_for_active()
    print("Fire!")
    sensor.wait_for_inactive()
    print("No fire")

Вы можете обнаружить, что логика перевернута (говорит «огонь», когда огня нет), и в этом случае используйте InputDevice(17, pull_up=True)

В качестве альтернативы к приведенному выше коду вы можете использовать if sensor.is_active или использовать механизм обратных вызовов sensor.when_activated = callback. См. gpiozero docs для получения дополнительной информации.

12
задан stanch 10 March 2009 в 17:20
поделиться

6 ответов

Просто сделайте функцию, которая возвращает новую функцию b:

function getB(my1, my2) {
  return function() {
    a(my1, my2);
  }
}

и используйте его как это:

var b = getB(my1, my2);
17
ответ дан 2 December 2019 в 07:22
поделиться

Поместите значения в массив (или JSON) и возвратите массив.

function a (p1,p2) { 
   var my = []
   my[0] = p1
   my[1] = p2
   return my
}

function b () {
    return a(my1,nmy2)
}

Возможно, я упускаю суть в Вашем примере, я не знаю.

0
ответ дан 2 December 2019 в 07:22
поделиться

Запишите функцию, которая берет my1 и my2 и создает функцию b:

function make_b(my1, my2){
   return function b(){ return a(my1, my2);};
}
2
ответ дан 2 December 2019 в 07:22
поделиться

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

<script>

function a(p1, p2)
{
 return 'hello ' + p1 + ' and ' + p2;
}
function b(my1,my2)
{
 return function()
        {
          return a(my1,my2);
        }
}

var wrapper=b();
alert(wrapper());
</script>

Править

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

Редактирование 2

Хорошо, таким образом, я заменил их переменными;-)

1
ответ дан 2 December 2019 в 07:22
поделиться

Кажется, существует три части:

Определение a:

  function a(M, N) {
    return M + N;
  }

Определение b:

  var X = 10;
  var Y = 25;
  var b = function() {
   return a(X, Y);
}

Используя b:

  var thirtyFive = b(); // thirtyFive = 35
0
ответ дан 2 December 2019 в 07:22
поделиться

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

Можно посмотреть на реализацию здесь.

При использовании Прототипа можно получить функцию b этот путь.

var b = a.curry(arg1, arg2);

теперь вызов b() совпадает с вызовом a(arg1, arg2)

1
ответ дан 2 December 2019 в 07:22
поделиться
Другие вопросы по тегам:

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