范围结构可以在Swift中用作用户输入吗?

时间:2019-06-13 17:03:57

标签: swift console-application swift5

我想在Swift中为macOS(控制台应用程序)编写一个程序,该程序将占用用户两个时间间隔,并向用户输出基本操作,例如并集,交集和区别,以区分关闭和打开时间间隔。

我的问题是我不知道如何制作带范围的readLine,并且由于新的Swift 5版本,有关范围结构的信息很少。

我应该使用范围还是其他结构/类型?

例如: 输入: [-10,3) (2,+∞)

输出: Union: [-10,3) U (2,+∞) = [-10, +∞) Intersection: [-10,3) ∩ (2,+∞) = [2,3) Difference: [-10,3) \ (2,+∞) = [-10, 2)

1 个答案:

答案 0 :(得分:0)

  

我的问题是我不知道如何制作带范围的readLine

没有内置的魔术方法。

您实质上已经发明或强加了用户必须使用的符号。但是,用户输入只是一个字符串。由您来分析用户输入,并查看它是否/如何符合该表示法。构建严格的解析器是一个大课题。

更好的解决方案可能是构建一个用户界面,该界面允许用户直观地构造您要的对象类型。例如,您可以选择间隔类型,并为下限选择一个框,并为上限选择一个框。像无穷大之类的东西也将在视觉上输入,而不是使用户学会键入无穷大符号。选择要应用于多个范围(例如交集)的操作也是如此。

另一方面,在幕后,数学将变得微不足道,因为Swift Ranges可以为您提供开箱即用所需的一切。