Краткий ответ - нет, нет способа вернуть преобразованный объект поведения.
Сначала нужно определить выход, на который вы хотите повлиять, а затем выяснить, какие входы влияют на него. map
пойдет между ними. Например:
myTextField.rx.text.orEmpty
.map { [110].trimmingCharacters(in: CharacterSet.whitespaces)
.bind(to: username)
.disposed(by: disposeBag)
Если вы хотите, чтобы имя пользователя было выходным, или
username.asObservable() // I'm not sure if the asObservable() is actually necessary at the moment. Check that.
.map { [111].trimmingCharacters(in: CharacterSet.whitespaces)
.bind(to: myLabel.rx.text)
.disposed(by: disposeBag)
, если вы хотите, чтобы имя пользователя было входным.
Для создания username
просто используйте let username = BehaviorSubject<String>()
Используйте цикл while
number=""
while [[ ! $number =~ ^[0-9]+$ ]]; do
echo Please enter your age
read number
done
echo You are $number years old
И чтобы избежать тяжелого механизма регулярных выражений, используйте простой глобус:
if [[ ! $input || $input = *[^0-9]* ]]; then
echo "Error: '$input' is not a number." >&2
fi