@IBAction func touchDecimalSeparator() {
if userIsInTheMiddleOfTypingANumber{
if display.text!.rangeOfString(decimalSeparator) == nil {
display.text = display.text! + decimalSeparator
}
} else {
display.text = "0" + decimalSeparator
userIsInTheMiddleOfTypingANumber = true
}
}
let decimalSeparator = NSNumberFormatter().decimalSeparator
Опубликовано на русском языке Задание 1 CS193P 2016: Calculator в посте. В этом разделе вы можете обсуждать свои варианты решения.
Опубликовано на русском языке Задание 1 CS193P 2016: Calculator в посте. В этом разделе вы можете обсуждать свои варианты решения.
--
Вы получили это сообщение, поскольку подписаны на одну из тем в группе "Swift [ru]".
Чтобы отменить подписку на эту тему, перейдите по ссылке https://groups.google.com/d/topic/swiftru/tfD60V0-mVU/unsubscribe.
Чтобы отменить подписку на эту группу и все ее темы, отправьте письмо на электронный адрес swiftru+u...@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес swi...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/swiftru/c1119742-b0c0-4935-a538-efa4f277abcc%40googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Опубликовано на русском языке Задание 1 CS193P 2016: Calculator в посте. В этом разделе вы можете обсуждать свои варианты решения.
rand?.titleLabel?.adjustsFontSizeToFitWidth = true
--
Вы получили это сообщение, поскольку подписаны на одну из тем в группе "Swift [ru]".
Чтобы отменить подписку на эту тему, перейдите по ссылке https://groups.google.com/d/topic/swiftru/tfD60V0-mVU/unsubscribe.
Чтобы отменить подписку на эту группу и все ее темы, отправьте письмо на электронный адрес swiftru+u...@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес swi...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/swiftru/46994fbc-bf76-440f-9691-ecec5cf54588%40googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Опубликовано на русском языке Задание 1 CS193P 2016: Calculator в посте. В этом разделе вы можете обсуждать свои варианты решения.
Опубликовано на русском языке Задание 1 CS193P 2016: Calculator в посте. В этом разделе вы можете обсуждать свои варианты решения.
3. formatter нужен и в CalculatorBrain (для описания description нужно преобразовывать операнды из Double в String), и в ViewController.
Поэтому создаем глобальную переменную все равно в каком файле.
let formatter:NSNumberFormatter = {
let formatter = NSNumberFormatter()
formatter.numberStyle = .DecimalStyle
formatter.maximumFractionDigits = 6
formatter.notANumberSymbol = "Error"
formatter.groupingSeparator = " "
formatter.locale = NSLocale.currentLocale()
return formatter
} ()
. . . . . . . . . . . . . . . . . . . . . . . . . .
Опубликовано на русском языке Задание 1 CS193P 2016: Calculator в посте. В этом разделе вы можете обсуждать свои варианты решения.
Опубликовано на русском языке Задание 1 CS193P 2016: Calculator в посте. В этом разделе вы можете обсуждать свои варианты решения.
Опубликовано на русском языке Задание 1 CS193P 2016: Calculator в посте. В этом разделе вы можете обсуждать свои варианты решения.
Дело в том, что оператор сложения + в Swift представляет собой функцию типа (Double , Double )-> Double, и мы можем оставить только этот символ. То же самое с оператором умножения * — это тоже функция типа (Double , Double )-> Double. Все операторы * , + , — , / в Swift определены таким образом, что они являются инфиксными правыми операторами
infix operator <*> { associativity right }
между двумя аргументами. И вместо того, чтобы писать аргументы в круглых скобках, мы используем эти операторы.
Мы не можем также поступить с делением / и вычитанием — из-за обратного порядка операндов.
if currentPrecedence < precedence {
descriptionAccumulator = "(" + descriptionAccumulator + ")"
}
currentPrecedence = precedence
pending = PendingBinaryOperationInfo(b...
currentPrecedence = precedence