Я использую это для узла, см., работает ли этот подход для вас
var _ = require('lodash');
var fnA1 = require('functions/fnA1');
var fnA2 = require('functions/fnA2');
module.exports = {
run: function(fnName, options, callback) {
'use strict';
var nameSpace = fnName.toString().split('.');
// if function name contains namespace, resolve that first before calling
if (nameSpace.length > 1) {
var resolvedFnName = this;
_.forEach(nameSpace, function(name){
resolvedFnName = resolvedFnName[name];
});
resolvedFnName(options, callback);
} else {
this[fnName](options, callback);
}
},
fnA1: fnA1,
fnA2: fnA2
};
, называть это как
importVariable.run('fnA1.subfunction', data, function(err, result){
if (err) {return callback(err);}
return callback(null, result);
});
Это ключевое слово java ... final
всегда одинаково в orroid или нет в android. Это зависит от того, к чему вы обращаетесь.
Например
Применить к переменной означает, что ее нельзя изменить после инициализации.
Применить к методу означает, что он не может перегрузить метод.
Применить к классу, и вы не можете переопределить этот класс.
Финал блокирует только ссылку. Не объект и метод внутри ссылки.
В Android это точно так же, как в Java.
Например, final int a = 5
, тогда a не может быть изменено.
Final final TextView campoTexto
; то campoTexto не может быть переопределен, но метод внутри like setText or others
разрешен для использования.
Более полным примером является Final Deque<Integer> stack = new ArrayDeque<>();
, тогда стек нельзя переопределить, но stack.push, pop
и другие методы разрешены для использования, поэтому объекту внутри стека разрешено изменять
Для переменных ключевое слово final
означает, что оно в основном является константой. В этом случае, поскольку это объект, его ссылка не может быть изменена. Поэтому в основном, если вы попытаетесь снова назначить final TextView campoTexto
, компилятор выкинет ошибку.