鍍金池/ 問答/網(wǎng)絡(luò)安全/ 可以解釋下這行代碼是什么意思嗎?

可以解釋下這行代碼是什么意思嗎?

可以解釋下這行代碼是什么意思嗎?
為什么可以這樣寫?
為什么要寫成這樣?

    fun log(tag: String)
        = fun(target: OutputStream)
        = fun(message: Any?)
            = target.write("[$tag] $message\n".toByteArray())
回答
編輯回答
六扇門

既然你給這個問題打了currying這個標簽,我很奇怪你為什么不知道這就是一般柯里化的寫法。

log函數(shù)接收一個tag參數(shù),然后返回一個接收target參數(shù)的匿名函數(shù),這個匿名函數(shù)又會返回一個接收message的匿名函數(shù),最后這個函數(shù)使用前面接收到的三個參數(shù)來完成write操作。

這個函數(shù)在調(diào)用的時候需要連著調(diào),像這樣:

log(aTag)(aTarget)(aMessage);
2017年8月11日 19:19