如何将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?

下一篇: How do you wrap a command with a line