首页 > 解决方案 > swift 为什么要使用扩展程序

问题描述

我对一般的编码和 swift 比较陌生,但我正在学习 SQLite 教程(https://www.raywenderlich.com/385-sqlite-with-swift-tutorial-getting-started)。我不明白在这里使用扩展的理由。我已经创建了一个自定义类来包装所描述的 SQL 连接,但我对扩展的理解是扩展现有类以向该类添加功能。鉴于我已经编写了自定义类,为什么我不将任何需要扩展的代码放入类本身?

这是扩展代码;

https://www.raywenderlich.com/385-sqlite-with-swift-tutorial-getting-started

    extension SQLiteDatabase {
       func prepareStatement(sql: String) throws -> OpaquePointer? {
         var statement: OpaquePointer? = nil
         guard sqlite3_prepare_v2(dbPointer, sql, -1, &statement, nil) == SQLITE_OK else {
         throw SQLiteError.Prepare(message: errorMessage)
         }

       return statement
       }
     }

我的实现基本相同,但转储到类本身......

     class SQLiteDatabase {
         <stuff>

         func prepareStatement(sql: String) throws -> OpaquePointer? {
              var statement: OpaquePointer? = nil
              guard sqlite3_prepare_v2(dbPointer, sql, -1, &statement, nil) == SQLITE_OK else {
             throw SQLiteError.Prepare(message: errorMessage)
             }

             return statement
         }
     } // End Class

任何人都有洞察力,我显然错过了一些东西,但我不知道它是什么?

标签: swiftsqliteswift-extensions

解决方案


推荐阅读