【Clojure 基本知識】 關於函式引數的各種高階用法
關於Clojure函式引數用法,學習中一些總結,無廢話,直接看程式碼:
一、接受不定引數
;;接受不定引數 (defn f0[& pms] (println "params count=" (count pms) " type pms=" (type pms)) (doseq [pm pms] (println pm) ) )
;;呼叫示例
;;呼叫示例
user=> (f0 "abc" 111 :err) params count= 3 type pms= clojure.lang.ArraySeq abc 111 :err nil user=>
二、接受map引數,map可為空或缺失部分或全部關鍵字,解構出的引數值為nil
;;接受map引數,map可為空或缺失關鍵字,解構出的引數值為nil (defn f1[pm {:keys [key value]}] (println "pm->" pm) (println "key->" key) (println "value->" value) )
;;呼叫示例
user=> (f1 "abc" {:key "kk" :value 1}) pm-> abc key-> kk value-> 1 nil user=> (f1 "abc" {:key "k2"}) pm-> abc key-> k2 value-> nil nil user=> (f1 "abc" {}) pm-> abc key-> nil value-> nil nil user=>
三、接受map引數,為解構引數設定預設值
;;接受map引數,為解構引數設定預設值 (defn f11[pm {:keys [key value] :or {key "def-key" value "def-value"}}] (println "pm->" pm) (println "key->" key) (println "value->" value) )
;;呼叫示例
user=> (f11 "abc" {:key "kk" :value 1}) pm-> abc key-> kk value-> 1 nil user=> (f11 "abc" {:key "k2"}) pm-> abc key-> k2 value-> def-value nil user=> (f11 "abc" {}) pm-> abc key-> def-key value-> def-value nil user=>
四、可選命名引數
;;可選命名引數 (defn f2[pm & {:keys [key value]}] (println "pm->" pm) (println "key->" key) (println "value->" value) )
;;呼叫示例
user=> (f2 "abc" :key "kk" :value 1) pm-> abc key-> kk value-> 1 nil user=> (f2 "abc" :key "k2") pm-> abc key-> k2 value-> nil nil user=> (f2 "abc" ) pm-> abc key-> nil value-> nil nil user=>
五、有預設值的可選命名引數
;;有預設值的可選命名引數 (defn f22[pm & {:keys [key value] :or {key "def-key" value "def-value"}} ] (println "pm->" pm) (println "key->" key) (println "value->" value) )
;;呼叫示例
user=> (f22 "abc" :key "kk" :value 1) pm-> abc key-> kk value-> 1 nil user=> (f22 "abc" :key "k2") pm-> abc key-> k2 value-> def-value nil user=> (f22 "abc" ) pm-> abc key-> def-key value-> def-value nil user=>
相關推薦
【Clojure 基本知識】 關於函式引數的各種高階用法
關於Clojure函式引數用法,學習中一些總結,無廢話,直接看程式碼: 一、接受不定引數 ;;接受不定引數 (defn f0[& pms] (println "params count=" (count pms) " type pms=" (type pms)) (doseq [pm p
【Clojure 基本知識】小技巧s
;;模擬console原位更新輸出 ;;空格擦除法,輸出空格,是為了擦除短字串尾部沒有佔用的位置,因為退格只是回退,並不刪除(dotimes [_ 10](let [n (rand) sn (.substring (str n ) 2) len (count sn)](print sn)(flush)(Th
【Clojure 基本知識】 ns巨集的 指令(關鍵字) requrie的用法
指令(:require)用在(ns)之中,下面是實踐中總結的幾種用法(下文中省略ns巨集,只是給出:require的程式碼): 一、匯入完整名稱空間。 1,最簡單的形式: (:require clojure.data.json) 2,同時匯入同一名稱空間的多個子名稱空間: (:require
【Python基礎知識】基本數據類型:數字、字符串、列表、元組、字典、集合
tuple 位置 環境 htm 邏輯 python3 修改 yield 啟動 1.查看Python版本 python -V 2.Windows系統下使用命令行設置環境變量:path=%path%;D:\Python 3.幾個重要的Python環境變量 PYTHONPA
【Java基礎知識】JDBC基本操作
Jdbc簡介 JDBC(Java Data Base Connectivity )(java 資料庫連線) 可以為多種資料庫提供統一的資料庫訪問。 JDBC使用詳解 JDBC程式設計步驟 1. 載入驅動程式:Class.forName(driverClas
【C語言】函式引數中的const修飾符
通常,字串操作函式原型中,都會在形參前面加上const修飾符,表示此指標不能用於修改字串的值 比如:char *strcpy(char *strDest, constchar *strSrc)
【PHP基礎知識】——常用字串處理函式總結
一、概要 我們知道,字串操作是主流web程式語言的基礎,也是在日常開發中不可或缺的一項。PHP處理字串的能力非常強大,方法也是多種多樣。文章列舉了一些PHP中常見的字串處理方法。二、常用字串處理方法 1、判斷一個字串的長度:intstrlen ( string $strin
【SSH】---【Struts2、Hibernate5、Spring4】【散點知識】
作用域 才會 進行 namespace sci 3.2 對象關系映射 工作 XML 一、Struts21.1、Struts2的概念Struts2是一個用來開發MVC應用程序的框架,它提供了Web應用程序開發過程中的一些常見問題的解決方案: ->對來自用戶的輸入數
【網絡知識】【1】http、tcp/udp、soap的區別
target https tar 網絡知識 soa 區別 ext soap udp 一句話總結: soap信息可以通過http協議包裝後通過tcp或udp傳輸參考:https://zhidao.baidu.com/question/617706398106243452.ht
01月29日【Python3 基礎知識】
python01月29日【Python3 基礎知識】 5.4 參數匿名函數字典排序 5.5 生成式和生成器 5.6 裝飾器的作用 5.4 參數匿名函數字典排序 # *元組;**字典 def add(*args): total = 0 for i in args: t
01月24日【Python3 基礎知識】
python01月24日【Python3 基礎知識】 3.4 統計字符串 3.5 乘法口訣 3.4 統計字符串 # 統計字符串給類型符號個數 s = n = f = 0 st = input("隨意輸入字符:") for i in st: if i.isalpha(): s
01月22日【Python3 基礎知識】
python01月22日【Python3 基礎知識】 2.4 計算器 2.5 tuple操作 2.6 dict 2.7 其他常用操作 2.4 計算器 def add(string): total = 0 numbers = [] numbers += string.spl
01月19日【Python3 基礎知識】
python2.1 數據類型 2.2 字符串 2.3 list操作 2.1 數據類型 # Ptyhon運算符 ‘‘‘ 數字運算符: + - * / % 關系運算符: a == b a>b a<b a!=b >= <= 賦值運算符: a = b += -= *=
01月26日【Python3 基礎知識】
python01月26日【Python3 基礎知識】 5.1 九宮格 5.2 函數入門 5.3 判斷某天為某年的第幾天 5.1 九宮格 import random x = 0 l = [1,2,3,4,5,6,7,8,9] print("*************") while len(l) !
01月23日【Python3 基礎知識】
python01月23日【Python3 基礎知識】 3.1 if/while/for 3.2 解決數學難題 3.3 Python實例 3.1 if/while/for ‘‘‘ # if 判斷條件: 執行語句 elif 判斷條件: 執行語句 else: 執行語句 # whi
01月25日【Python3 基礎知識】
python01月25日【Python3 基礎知識】 4.1 讀寫文件 4.2 文件方法 4.3 python2的亂碼問題 4.4 python對passwd文件進行排序 4.1 讀寫文件 訪問 模式 說 明 r 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。
01月18日【Python3 基礎知識】
python1.1 Python的安裝1.2 pycharm安裝1.3 pycharm快捷鍵1.4 pycharm其他設置 1.1 Python的安裝 Python的重要性 python 流行程度 近幾年內已經擠進前五名,慢慢已經成為一個開發者或運維必須掌握的一門語言 隨著現在運維自動化,雲計算,虛擬化,機
【C/C++開發】函式使用結構體、結構體指標作為返回值分析
函式使用結構體、結構體指標作為返回值分析 32位機,gcc編譯器 使用結構體作為返回值 分析反彙編程式碼可知,當被呼叫的子函式返回值為結構體的時候,呼叫函式將分配一段空間用於存放返回的結構體(使用一個結構體變數接受返回值),並將這段空間的地址作為呼叫時的引數壓棧。子程式不負責對要返回的結構體分
【C/C++開發】函式指標與回撥函式
C++很多類庫都喜歡用回撥函式,MFC中的定時器,訊息機制,hook機制等待,包括現在在研究的cocos2d-x中也有很多的回撥函式。 1.回撥函式 什麼是回撥函式呢?回撥函式其實就是一個通過函式指標呼叫的函式!假如你把A函式的指標當作引數傳給B函式,然後在B函式中通過A函式傳進來的這個指標
07-【jsp基本瞭解】
jsp 動態網頁技術:伺服器和使用者互動的動態網頁技術jsp【java server page 】jsp ≈ html +servletjsp 檔案是以 *.jsp結尾:jsp檔案 靠伺服器執行,jsp 是伺服器端指令碼語言jsp 解決的問題:servlet將資料傳到html ,html 無法展示j