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

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

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

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

既然你給這個(gè)問(wèn)題打了currying這個(gè)標(biāo)簽,我很奇怪你為什么不知道這就是一般柯里化的寫(xiě)法。

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

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

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