在Swift中输入安全矩阵

工具:安全矩阵协议和类型

您可以决定事先浏览SafeMatrix.swift代码,或者直接跳到下面的“设置和使用”部分。

设置第一部分:现有矩阵实现

正如我在一开始所解释的,我们需要从现有的矩阵库开始。 我的Matrix结构示例实现 以下内容包括初始化,条目查找,可变条目,加法,乘法和标量乘法。 在此实现中,条目的类型为Double ,但它们可以为Int或任何其他类型。 此实现缺少转置,行列式,逆和许多其他标准矩阵运算。

设置第二部分:数字

在以下各节中,我们将初始化和操作SafeMatrix泛型结构的实例。 此结构具有三种关联的类型;

  1. MatrixType ,符合UnsafeMatrixProtocol
  2. ,符合NumeralProtocol
  3. 符合NumeralProtocol的

您可能已经猜到了, MatrixType将成为我们的“现有” Matrix类型。

那么什么是 ? 这些类型的唯一目的是提供专用SafeMatrix结构的行数和列数。 这样,除其他事项外,具有不同维度的两个矩阵始终是不同类型的。

在我们的示例中,我们假设我们有两个全局变量mn 并且我们的代码将具有m×nn×mm×mn×n矩阵。

在实际的用例中,您可能需要从外部源(例如文件或Web服务)中加载这些值。 我不在这里考虑这些情况,但是可以通过修改设置来解决。

用法第一部分:初始化

我终于准备向您展示生成的m×n安全矩阵类型。 这只是SafeMatrix ,并且可以使用m×n Matrix进行初始化。

使用第二部分:运算符

回想一下,我们的Matrix类型支持加法,乘法和标量乘法运算符。 我们想将它们移植到SafeMatrix 。 为此,我们再次需要编辑MatrixSetup.swift

使用第三部分:转置,逆和行列式

在本节中,我们假设Matrix类型包含transposeinversedeterminant方法的实现。 现在,我们在Matrix.swift中添加了存根实现,但是要注意,您将需要真正的实现才能使usageMethods()函数运行。

如果您觉得本文有用或有趣,请推荐💚并考虑加入下面的讨论🙂!