Получить событие клавиатуры в purescript

Оператор == проверяет, указывают ли две ссылки на один и тот же объект или нет. .equals() проверьте фактическое содержимое строки (значение).

Обратите внимание, что метод .equals() принадлежит классу Object (суперкласс всех классов). Вам необходимо переопределить его в соответствии с вашим требованием к классу, но для String оно уже реализовано и проверяет, имеет ли две строки одно и то же значение.

  • Случай 1
    String s1 = "Stack Overflow";
    String s2 = "Stack Overflow";
    s1 == s2;      //true
    s1.equals(s2); //true
    
    Причина: строка литералы, созданные без нуля, хранятся в пуле строк в области перментонов кучи. Таким образом, оба s1 и s2 указывают на один и тот же объект в пуле.
  • Случай 2
    String s1 = new String("Stack Overflow");
    String s2 = new String("Stack Overflow");
    s1 == s2;      //false
    s1.equals(s2); //true
    
    Причина. Если вы создаете объект String с использованием ключевого слова new, ему выделяется отдельное пространство в куче.
1
задан hamza mah 10 March 2019 в 01:01
поделиться

1 ответ

Блок, который вы передаете halogenRunAff, является блоком Aff, поэтому каждая строка в нем должна быть Aff. Но liftEff возвращает Eff вместо этого. Так что есть несоответствие.

Это то, что говорит вам компилятор: «не может сравниться с Eff с Aff».

Чтобы исправить это, замените liftEff на liftAff:

documenttarget <- liftAff $ window >>= document <#> DHT.htmlDocumentToEventTarget 
0
ответ дан Fyodor Soikin 10 March 2019 в 01:01
поделиться
Другие вопросы по тегам:

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