動態

列表
創建 時間

Android開發中的函數式編程應用:什麼是函數式編程

我們進行了多年的Android開發,但是面對越來越複雜的業務邏輯和越來越龐大的代碼,傳統命令式的編程方式已經漸漸無法解決我們的問題了。今天開始我們將探索一種非常強大的編程範式:函數式編程。 1. 傳統編程範式的挑戰 1.1 過程式編程的難題 大家日常開發中一定遇到過這些問題: 1.1.1 返回值不確定 // 全局計數器變量 var counter = 0 // 返回值依賴於外部狀態,每次調用結果

創建 時間

Android開發中的函數式編程應用:流與響應式編程

流與響應式編程 1. 函數式副作用的處理 之前有説過函數式編程中儘量要編寫純函數,但是實際的程序中不可能如此理想的都是純函數,異常、用户交互、時間、變量等等這些所謂的“副作用”是一定會也一定需要存在的,那程序應該如何編寫? 首先我們需要回到“純函數”的定義上:對於相同的輸入,總是產生相同的輸出,可以用返回值替換函數執行。 比如: var count = 0 fun increase(a: Int)

創建 時間

Android開發中的函數式編程應用:面向組合子編程

1. 聲明式編程 聲明式範式和命令式範式是不同的。命令式編程專注於“如何一步步完成任務”,開發者需要詳細地指示如何執行每一個步驟,比如Android的xml layout開發,開發者必須指定所有View的層次結構,自己調整View的屬性以獲得更好的性能。 而聲明式編程則關注於“期望的結果是什麼”,而具體這個結果如何達到、如何實現則不會明確編寫,而是交給框架來處理。比如數據庫的SQL,我們對於

創建 時間

用組合子,手把手實現一個通用語法分析器

語法分析器 語法分析通常是作為編譯器或者解釋器的一個組件出現的,它是一種特別的程序,接收非結構化的數據(比如文本、任何種類的符號、數字或者字符流),輸出結構化的數據為結果。比如將csv(逗號分隔值)文本文件解析為二維數組;將Json或者xml解析為樹形數據結構。 目前實際上已經有比較成熟的工具(比如Yacc、ANTLR等)可以根據語法規則自動生成語法分析器的實現代碼,而且執行效率很高。 面向組合子