歡迎加入QQ討論群258996829
Swift 頭像
蘋果5袋
5
Swift

盤點開發(fā)者最喜愛的Swift技巧

發(fā)布時間:2014-12-31 22:59  回復:0  查看:6537   最后回復:2014-12-31 22:59  

屈指算來,Swift語言才發(fā)布半年左右,卻已深得眾多開發(fā)者的青睞,也有了許許多多的學習資源、項目和工具。在本文中,來自objc.io、LinkedIn等各個公司的軟件工程師及資深開發(fā)者總結了自己在接觸Swift過程中最喜愛的貼士與技巧,有些技巧即使是很早就入坑Swift的開發(fā)者都不知道,不妨一起來了解一下吧。

Natasha Murashev——Capital One iOS工程師、Natasha The Robot博主

當我在構建iOS應用時,Swift能夠允許更多的函數(shù)式編程方法,所以,為了能在改善Swift代碼時做出更好的決策,我一直在學習函數(shù)式編程。迄今為止,我最喜歡的函數(shù)方面的Swift資源有:



  • 功能型函數(shù)——能輕松更改函數(shù),讓代碼更獨立、可測試。
  • 包裝類型——我喜歡用可讀且安全的類型別名來編寫代碼。
  • 類型設計——在設計程序時大幅使用正確的類型,有利于編譯器調(diào)試。
  • Swift中柯里化函數(shù)的運用——在Haskell中,某種類型的函數(shù)指針只能指向特定參數(shù)類型和數(shù)目以及返回值類型的函數(shù),而Swift則允許“currying”或部分應用函數(shù),從而實現(xiàn)代碼塊可重復使用。
  • Swift奇妙的差錯處理——與Objective-C相比,我特別喜歡這種簡單、可讀性強而又安全的錯誤處理方式。
  • 面向對象編程直達車——它為在代碼中進行錯誤處理提供了一種最快捷的方式,于程序猿而言,最幸福之事莫過于此。
  • Swift函數(shù)式編程——這是一本關于Swift函數(shù)比較深度的書籍,我每次重新讀過時都會發(fā)現(xiàn)不一樣的點,非常適合想要深入研究Swift函數(shù)以及如何將其運用到iOS代碼中的開發(fā)者們閱讀。






Chris Eidhof——objc.io創(chuàng)始人、《Swift函數(shù)式編程》作者

快速排序(Quicksort)——Swift中的快速排序實現(xiàn)可以說是前無古人后無來者,大多數(shù)Quicksort實現(xiàn)都需使用固定的內(nèi)存,而Swift則能以最簡潔清晰的程序實現(xiàn)快排:

func qsort(input: [Int]) -> [Int] {  
    if let (pivot, rest) = input.decompose {  
        let lesser = rest.filter { $0 < pivot }  
        let greater = rest.filter { $0 >= pivot }  
        return qsort(lesser) + [pivot] + qsort(greater)  
    } else {  
        return []  
    }  
}  

Austin Zheng——LinkedIn高級軟件工程師

我認為,精妙的Swift技巧應當如此:開發(fā)者可以通過創(chuàng)建一個已定義標準類的閉包來為匿名類實例設置委托,而閉包則將返回該類的一個新實例,并運行。示例代碼如下:

import Foundation 
protocol SomeDelegateProtocol : class {
    func firstFunc() -> String
    func secondFunc() -> Bool
}
class MyClass {
    weak var delegate : SomeDelegateProtocol?
}
class Parent {
    var child : MyClass
    var strongDelegate : SomeDelegateProtocol? = nil
    func setup() {
        strongDelegate = {
            // [self]   // Original version had this not commented; it's commented to let people know it was a typo
            class SomethingClass : SomeDelegateProtocol {
                func firstFunc() -> String { return "foo" }
                func secondFunc() -> Bool { return true }
            }
            return SomethingClass()
        }()
        child.delegate = strongDelegate
    }
    init() {
        self.child = MyClass()
        self.setup()
    }
}
var bleh = Parent()
var result = bleh.child.delegate?.firstFunc()
println("Got \(result!)")

Clay Smith——PagerDuty高級軟件工程師

下面是我在處理所有Xcode問題(尤其是sourcekit)時所使用的最基本的Bash alias(命令別名),用來刪除Xcode中的Derived Data:

alias sourcekitsad='rm -rf ~/Library/Developer/Xcode/DerivedData'

Michael Helmbrecht——Motiv UX設計師兼iOS開發(fā)者

于我而言,最喜歡的一點應該是Swift能在String類型和NSString類型中自動轉換,當無法打印String時,通過直接調(diào)用NSString的-description方法即可實現(xiàn)。

David Kobilnyk——ShopRunner軟件工程師

作為一門編程語言,我覺得Swift還不夠優(yōu)雅,而我也并沒有發(fā)現(xiàn)什么太特別的技巧,只是很喜歡原始類型、枚舉一起使用,就像這樣:

public enum ReminderTimeType: String {
    case Evening = "this evening"
    case Tomorrow = "tomorrow"
    case Weekend = "this weekend"
    case NextWeek = "next week"
    case CoupleWeeks = "in a couple weeks"
    case CoupleMonths = "in a couple months"
    case Someday = "someday"
    public static let array = [
        Evening, Tomorrow, Weekend, NextWeek, CoupleWeeks, CoupleMonths, Someday
    ]    
    public static let rawArray = array.map { $0.rawValue }
}


Alexis Gallagher——高級iOS開發(fā)者

要說我最喜歡的Swift技巧,應該有兩個,一個是在REPL中,handy函數(shù)可直接用于獲取表達式靜態(tài)類型,而想要獲取任意實例值的類型名稱則可直接調(diào)用_stdlib_getDemangledTypeName。

func typeof<T>(@autoclosure () -> T) -> Any.Type { return T.self }

JP Simard——Realm iOS工程師

開發(fā)者可以直接使用nm工具通過libswiftCore.dylib來獲取所有私有的Swift標準庫函數(shù),比如_stdlib_getTypeName()、_stdlib_demangleName()和_stdlib_conformsToProtocol():

cd `xcode-select -p`/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx
    nm -a libswiftCore.dylib | grep "T _swift_stdlib_"

Warren Moore——《Metal By Example》作者

當結構體中的所有成員屬于同一類型時(比如浮點型),通過Swift,開發(fā)者可以將其中的同類數(shù)組作為一個指針指向結構體中的成員類型。這一方法,讓我能夠非常簡便地去創(chuàng)建頂點數(shù)據(jù)的Metal緩沖區(qū),而無需其他多余的復雜操作。

Mustafa Furniturewala——Coursera軟件工程師

我最喜歡的Swift資源是Swifter,對我來說,它是編程必備的參考指南,而最喜歡的技巧則是開發(fā)者可以使用任意的Swift函數(shù)來實現(xiàn)Objective-C風格的動態(tài)分配。

(編譯/唐小引 責編/劉璐璐)


文章來源:Realm

您還未登錄,請先登錄

熱門帖子

最新帖子

?