如何将readLine()的Swift 3输出转换为Integer?
在你阅读完所有内容之前,请不要标记为重复。 这是Swift 3特有的。
我有函数,如Ints,Floats等。我想采用readLine()的输出,并让Swift接受readLine()的输出作为这些类型,但不幸的是readLine()会输出一个String? 当我试图转换它告诉我它不是unwrapped。 我需要帮助。 我使用的是Ubuntu 16.04。
例如,如果我有area(width: 15, height: 15)
,我将如何用包含readLine()或任何等效于readLine()的常量替换15和15以接受来自终端中用户的输入?
还要注意我写的程序专门做数学,因为大多数人似乎对字符串感到满意,这实际上是一个基于CLI的计算器。
编辑1(哈哈)好的,这里有一个更精确的解释。 以下代码将打印梯形区域:
import Foundation
func areaTrapezoid(height: Float, baseOne: Float, baseTwo: Float) {
let inside = baseOne + baseTwo
let outside = 0.5 * height
let result = outside * inside
print("Area of Trapezoid is (result)")
}
areaTrapezoid(height: 10, baseOne: 2, baseTwo: 3)
所以,梯形的高度为10个单位,两个底座的长度分别为2和3。 但是,我想要做的事情如下所示:
import Foundation
func areaTrapezoid(height: Float, baseOne: Float, baseTwo: Float) {
let inside = baseOne + baseTwo
let outside = 0.5 * height
let result = outside * inside
print("Area of Trapezoid is (result)")
}
let h = readLine()
areaTrapezoid(height: h, baseOne: 2, baseTwo: 3)
除了已经很明显,readLine()会输出一个可选的字符串,而不是一个Float。 我希望用户能够以交互方式通过CLI输入数字,如果您愿意的话。 我刚刚学习Swift,但是当我学习那种语言时,我在C ++中做了类似的事情。 感谢您的任何帮助,您可以提供。
readLine()
返回一个可选字符串。
要打开字符串,可以使用if let
,并将字符串转换为整数,使用Int()
。
例:
import Foundation
if let typed = readLine() {
if let num = Int(typed) {
print(num)
}
}
假设您提示用户两次:
let prompt1 = readLine()
let prompt2 = readLine()
然后:
if let response1 = prompt1,
response2 = prompt2,
num1 = Int(response1),
num2 = Int(response2) {
print("The sum of (num1) and (num2) is (num1 + num2)")
}
链接地址: http://www.djcxy.com/p/9663.html
上一篇: How to convert Swift 3 output of readLine() to Integer?