窺探Swift之使用Web瀏覽器編譯Swift代碼以及Swift中的泛型

来源:http://www.cnblogs.com/ludashi/archive/2016/01/06/5066286.html
-Advertisement-
Play Games

有的小伙伴會問:博主,沒有Mac怎麼學Swift語言呢,我想學Swift,但前提得買個Mac。非也,非也。如果你想瞭解或者初步學習Swift語言的話,你可以登錄這個網站:http://swiftstub.com/。該網站可以線上運行出代碼結果,也可以說這是一個線上的Playground。你可以...


   有的小伙伴會問:博主,沒有Mac怎麼學Swift語言呢,我想學Swift,但前提得買個Mac。非也,非也。如果你想瞭解或者初步學習Swift語言的話,你可以登錄這個網站:http://swiftstub.com/ 。該網站可以線上運行出代碼結果,也可以說這是一個線上的Playground。你可以實時觀察你代碼的運行結果。如果你沒有Mac筆記本,那麼你只需打開你的瀏覽器,然後輸入上述網址,就可以搞搞Swift這門語言了,灰常好用的呢。下方的截圖就是該網址打開的截圖。

 

  上面如果算是工具性的網站的話,那麼接下來將會給大家介紹一個學習網站:http://swiftdoc.org 。該網站集成了Swift的各種東西,內容雖然是英文的,但是裡邊的東西還是相當不錯的,裡邊的內容也會隨著Swift語言版本的更新而更新。如果你的英文比較好,那麼完全可以去這個網站中去汲取你的知識。下方是該網站的一個截圖,也是一個比較好的學習的地方。

  Swift中也是支持泛型的,在許多現代編程語言,如C++, Java, C#也都是支持泛型的。泛型,從錶面的名字來看,就是寬泛的數據類型。使用泛型定義的方法,類,結構體,協議等可以支持不同的數據類型。泛型其實就是數據類型的占位符。當然這個占位符的名字有你來定,你定義的這個占位符就是數據類型的變數,你傳給他什麼類型,那麼這個泛型占位符就代表什麼類型。這樣說來泛型理解起來就不困難了。

  今天博客中的內容算是比較簡單,也是比較基礎,雖簡單,但失其重要性。今天博客中就通過一些示例來窺探一下泛型的使用方法和使用場景。無論你是在函數,類,協議,延展等場景中使用泛型。他們有一個共性,同時也是泛型的特點“高度重用性”。能寫出高度重用的東西,在編程中是灰常令人興奮的一件事情。

  一. 泛型函數

    1.單一占位符泛型函數

    下麵就使用一個經典案例:兩個數值進行交換。來使用泛型,寫一個通用的函數,這個函數的功能就是交換兩個變數的值。在Swift中不允許類型隱式轉換,也就是說,如果你定義的該函數是交換兩個整數的,那麼如果你想使用他來交換浮點類型的數據,那麼對不起,是不允許這樣做的。為了寫個通用的函數,那接下來就是泛型出場的時候了。

    下麵就是使用泛型來定義一個交換兩個變數的值的函數,該函數如下圖所示。其中MyCustomeType就是在函數中定義的泛型占位符,改占位符表示傳入的參數是什麼類型,那麼MyCustomeType就是什麼類型。這樣一來,使用泛型定義的該函數就是通用的了。在該函數中只用到了一個MyCustomeType,也就是下方的函數還是有一定約束性,就是number1和number2的類型都是相同數據類型的,這種情況也是單一占位符泛型函數。

    

    調用上述函數來交換兩個字元串類型的值:

    同樣的函數,你還可以使用它來交換兩個整數,浮點數等等其他數據類型,下方就是交換的兩個整型的數據,也是沒有問題的。

 

    2.多個占位符的泛型函數

      這個是在上述函數中進行的擴充,泛型占位符允許是一個列表的形式出現的,也就是允許有多個不同的泛型占位符來代表不同的數據類型。也許說起來有些拗口,接下來就來個實例在函數中使用多個泛型占位符。具體實例如下所示。本質上允許在泛型占位符中添加多個泛型類型變數。下方的函數兩個參數的數據類型允許不同,因為其參數使用的是不同的泛型占位符,所以其類型允許是不同的。具體使用方式如下所示。

 

  二.泛型類

    泛型類,顧名思義,就是在類中使用泛型。在類中使用泛型,其實和函數中使用泛型是一樣的。就是在聲明類的時候,使用泛型占位符表示一個要處理的泛型即可。下方就是一個泛型類,其中有個泛型類型數組,還有一個列印該數組的方法,如下所示:

 

    上面是泛型類的定義,緊接著就是泛型類的使用了,下方是創建一個泛型類的實例,然後調用相應的方法,具體如下所示。

    上面是泛型類的定義與使用,泛型還可以應用於結構體,協議,延展等,其使用方法和泛型類是差不多的,要學會舉一反三。在本篇博客中就不對泛型結構體,泛型協議,泛型延展,以及泛型的約束做過多的贅述了。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Allocators與Criterion在記憶體使用及Create、Copy、Assignment的相同點及區別
  • 感謝此文:http://blog.csdn.net/soszou/article/details/23673133 本文很多技術及操作來源於此文 需求:因為微信方面的開發調試。為了測試方便,直接構建了一個跟真實生產環境一樣的測試環境。除了功能變數名稱不同其他都一樣。想直接使用功能變數名稱進行訪問調試。用的IIS+T...
  • 今天在上班路上看到一篇互聯網網路協議的文章感覺寫的的是相當好,圖文兼備,通俗易懂,好東西嘛當然要留下了,也在這給大家分享分享!
  • 最近在使用python做介面測試,發現python中http請求方法有很多種,現彙總如下:一、python自帶庫----urllib2python自帶庫urllib2使用的比較多,簡單使用如下:import urllib2response = urllib2.urlopen('http://loca...
  • Demo:import java.nio.file.Path;import java.nio.file.Paths;public class PathInfoTest { public static void main(String[] args) { /...
  • 支付寶介面使用文檔說明 支付寶非同步通知(notify_url)與return_url.現支付寶的通知有兩類。A伺服器通知,對應的參數為notify_url,支付寶通知使用POST方式B頁面跳轉通知,對應的參數為return_url,支付寶通知使用GET方式 (通知地址不需要像以前一樣去賬戶內設置,而...
  • 在實際編程中,往往存在著這樣的“數據集”,它們的數值在程式中是穩定的,而且“數據集”中的元素是有限的。 例如星期一到星期日七個數據元素組成了一周的“數據集”,春夏秋冬四個數據元素組成了四季的“數據集”。 enum 的全稱為 enumeration, 是 JDK 1.5 中引入的新特性,存放在...
  • Demo:import java.nio.file.Path;import java.nio.file.Paths;/** * @author jinxing * @系統 MAC OS X * @用例1 [使用]絕對路徑 * @用例2 [使用]相對路徑 * @用例3 相對路徑[轉換成]絕對路徑 * ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...