原创 Swift函數式編程十三(函子、適用函子、單子)

解釋一些函數式編程中的專用術語和一些常⻅模式,比如函子 (Functor)、適用函子 (Applicative Functor) 和單子 (Monad) 等。理解這些常⻅的模式,會有助於設計自己 的數據類型,併爲 API 選擇更合適的函數。

原创 Swift函數式編程十二(表格應用)

代碼地址 這個示例爲希望被解析的表達式編寫解析器,併爲這些表達式編寫一個求值器,然後將其嵌入界面中。 解析 基於解析器組合算子中的算術表達式解析器,引入額外的抽象層級。 之前,編寫的解析器會直接返回計算結果。比如在解析 "2*3" 這樣的乘

原创 Swift函數式編程十一(解析器組合算子)

代碼地址 解析類似1+2*3這樣的數學表達式。 解析器類型 通常一個解析器會接受一個字符串,解析成功返回一些值和剩下的字符串,解析失敗則什麼也不返回。這個過程總結爲這樣一個函數類型: typealias Parser<Result> = (

原创 HTML5和CSS3五CSS3二

代碼下載地址 屬性選擇器 根據屬性值來查找元素的方式: E[attr]:查找有attr屬性的E標籤 E[attr=value]:查找有attr屬性爲value的E標籤,嚴格匹配 E[attr*=value]:查找有attr屬性值包含val

原创 HTML5和CSS3四CSS3一

代碼下載地址 HTML5簡介 html5不是新的語言,而是html的第五次重大修改——版本 支持:所有主流瀏覽器都支持(Chrome、Firefox、Safari等),IE9(不是全部支持是有選擇的支持)及以上支持 改變了用戶與文檔的交互方

原创 HTML5和CSS3三自定義播放器

代碼下載地址 HTML 音頻/視頻參考手冊 UI說明 不贅述,直接看圖: 構建UI 如下構建標籤元素: <h3 class="playerTitle">視頻播放器</h3> <div class="player"> <video

原创 HTML5和CSS3二接口

代碼下載地址 網絡狀態改變事件 <script> /*online:網絡聯通時觸發*/ window.addEventListener("online", function () { alert("網絡聯通了

原创 HTML5和CSS3四屬性總結一

代碼下載地址 padding屬性 padding 在一個聲明中設置內邊距屬性。不允許指定負邊距值。 可能的值 值 描述 auto 瀏覽器計算內邊距。 length 規定以具體單位計的內邊距值,比如像素、釐米等。默認值是 0

原创 Swift函數式編程十(迭代器和序列)

代碼地址 迭代器(Iterators) 和序列(Sequences) 組成了 Swift 中 for 循環的基礎部分。 迭代器 迭代器是每次根據請求生成新元素的“過程”,一個迭代器是遵守一下協議的任何類型: protocol Iterato

原创 Swift函數式編程九(圖表)

代碼地址 一種描述圖表的函數式方式,並利用 Core Graphics 來繪製它們。通過對 Core Graphic 進行一層函數式的封裝,可以得到一個更簡單且易於組合的API。 繪製正方形和圓 首先通過如下代碼可以繪製下面的圖表:

原创 Swift函數式編程八(純函數式數據結構)

代碼地址 純函數式數據結構 (Purely Functional Data Structures) 指的是那些具有不變性的高效的數據結構。 二叉搜索樹 使用indirect關鍵字將二叉樹定義爲一個遞歸枚舉: indirect enum Bi

原创 Swift函數式編程七(枚舉)

代碼地址 在 Objective-C 和其他類 C 語言中,枚舉的聲明方式是有一些缺陷的,作爲類型來說並不夠嚴密。因爲所有的枚舉類型實際上都是整數,所以有些整數值就會沒有一個與之對 應的合法枚舉,更糟糕的是,它們之間是可以進行運算的,就好像

原创 Swift函數式編程六(不可變性的價值)

代碼地址 變量 Swift中的變量有兩種,一種是不可變變量(用let申明),另一種是可變變量(用var申明)。 很顯然,不可變變量會限制變量的能力,通常可變變量的使用更加廣泛。但是往往事實恰恰相反,例如當一個變量在很多地方被使用時,申明爲不

原创 Swift函數式編程五(QuickCheck)

代碼地址 QuickCheck是一個用於隨機測試的Haskell庫,相對於獨立的單元測試,QuickCheck描述函數抽象特性並生成測試來驗證這些特性。 生成隨機數 定義一個表達如何生成隨機數的協議: protocol Arbitrary

原创 Swift函數式編程四(可選值)

Swift的可選類型可以用來表示可能缺失或是計算失敗的值。 案例:字典 無法保證字典查詢操作總是返回一個值,Swift可選類型可以表示這種失敗的可能性: let citys = ["Paris": 2241, "Madrid": 3165,