В чем разница между операторами () и just () в RxAndroid для загрузки списка массивов? [Дубликат]

Консенсус заключается в использовании словаря для этого - см. другие ответы. Это хорошая идея для большинства случаев, однако есть много аспектов, связанных с этим:

  • вы сами будете нести ответственность за этот словарь, включая сбор мусора (из переменных in-dict) и т. Д. .
  • нет никакой локальности или глобальности для переменных переменных, это зависит от глобальности словаря
  • , если вы хотите переименовать имя переменной, вам придется сделать это вручную
  • однако вы гораздо более гибкие, например вы можете решить перезаписать существующие переменные или ... ... выбрать реализацию константных переменных для создания исключения при перезаписи для разных типов и т. д.

Тем не менее, я реализовал variable variables manager -класс, который предоставляет некоторые из вышеперечисленных идей. Он работает для python 2 и 3.

Вы использовали бы класс следующим образом:

from variableVariablesManager import VariableVariablesManager

myVars = VariableVariablesManager()
myVars['test'] = 25
print(myVars['test'])

# define a const variable
myVars.defineConstVariable('myconst', 13)
try:
    myVars['myconst'] = 14 # <- this raises an error, since 'myconst' must not be changed
    print("not allowed")
except AttributeError as e:
    pass

# rename a variable
myVars.renameVariable('myconst', 'myconstOther')

# preserve locality
def testLocalVar():
    myVars = VariableVariablesManager()
    myVars['test'] = 13
    print("inside function myVars['test']:", myVars['test'])
testLocalVar()
print("outside function myVars['test']:", myVars['test'])

# define a global variable
myVars.defineGlobalVariable('globalVar', 12)
def testGlobalVar():
    myVars = VariableVariablesManager()
    print("inside function myVars['globalVar']:", myVars['globalVar'])
    myVars['globalVar'] = 13
    print("inside function myVars['globalVar'] (having been changed):", myVars['globalVar'])
testGlobalVar()
print("outside function myVars['globalVar']:", myVars['globalVar'])

Если вы хотите разрешить переписывание переменных с помощью только тот же тип:

myVars = VariableVariablesManager(enforceSameTypeOnOverride = True)
myVars['test'] = 25
myVars['test'] = "Cat" # <- raises Exception (different type on overwriting)

23
задан j2emanue 13 June 2015 в 14:14
поделиться

3 ответа

Разница должна быть более четкой, если вы смотрите на поведение каждого, когда вы передаете ему Iterable (например, List):

Observable.just(someList) даст вам 1 эмиссию - a List.

Observable.from(someList) даст вам выбросы N - каждый элемент в списке.

Возможность передавать несколько значений в just является удобной функцией; следующие функционально одинаковы:

Observable.just(1, 2, 3);
Observable.from(1, 2, 3);
57
ответ дан Adam S 21 August 2018 в 03:32
поделиться
  • 1
    Это помогло завершить около 45 минут путаницы. Благодаря! – Josh 1 December 2016 в 20:39
0
ответ дан vortex.alex 21 August 2018 в 03:32
поделиться

Разница между just() и from():

Все, хотя just() и from(), похоже, выполняют одну и ту же работу, она отличается количеством выбросов.

just() - Делает только 1 эмиссию. Observable.just(new Integer[]{1, 2, 3}) делает одно излучение с обратным вызовом наблюдателя как onNext(Integer[] integers)

fromArray() - производит выбросы N. Observable.fromArray(new Integer[]{1, 2, 3}) делает три излучения с обратным вызовом наблюдателя как onNext(Integer integer)

1
ответ дан Zubair Rehman 21 August 2018 в 03:32
поделиться
Другие вопросы по тегам:

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