Как выполнить функцию Solidity через Web3.js? [Дубликат]

== проверяет ссылки на объекты, .equals() проверяет строковые значения.

Иногда кажется, что == сравнивает значения, потому что Java делает некоторые закулисные вещи, чтобы убедиться, что одинаковые строки в строке являются одним и тем же объектом.

Для Например:

String fooString1 = new String("foo");
String fooString2 = new String("foo");

// Evaluates to false
fooString1 == fooString2;

// Evaluates to true
fooString1.equals(fooString2);

// Evaluates to true, because Java uses the same object
"bar" == "bar";

Но будьте осторожны с нулями!

== обрабатывает строки null в порядке, но вызов .equals() из пустой строки приведет к исключению:

String nullString1 = null;
String nullString2 = null;

// Evaluates to true
System.out.print(nullString1 == nullString2);

// Throws a NullPointerException
System.out.print(nullString1.equals(nullString2));

Итак, если вы знаете, что fooString1 может но не менее очевидно, что он проверяет значение null (из Java 7):

System.out.print(Objects.equals(fooString1, "bar"));
0
задан Harsh Aatpadkar 21 December 2017 в 08:39
поделиться

1 ответ

См. документацию web3j :

  • contractCAt.getValues.call() запускается локально и не изменяет состояние вашего контракта на блок-цепочке. Не потребляет эфир.
  • contractCAt.getValues.sendTransaction() изменяет состояние (при условии, что транзакция успешно выполнена).
  • contractCAt.getValues() автоматически делегирует один из двух выше, основанный на определение метода. Константные и чистые функции будут использовать call(), а остальные будут использовать sendTransaction().
1
ответ дан Adam Kipnis 16 August 2018 в 04:39
поделиться
  • 1
    Спасибо. Я понял. – Harsh Aatpadkar 22 December 2017 в 10:37
  • 2
    Если я закрою консоль geth после завершения синхронизации, если я снова открою консоль geth на том же узле, я получу ту же учетную запись и кошелек. – Harsh Aatpadkar 22 December 2017 в 10:41
Другие вопросы по тегам:

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