不知道大家是否有聽過「流式接口」(Fluent Interface)
總之我是最近才知道這個詞的
說起來為什麼會去查這東西
因為最近隨便看看,看到Java code滿多這樣的程式碼:a.foo().boo(),像是這樣會將函式接連串下去的程式碼,就好奇查了一下Python相似的寫法實作與應用
然後就查到原來這樣的寫法有個稱呼:「流式接口」
維基百科裡上就有記載各種程式語言的實作,看了大概就能知道怎麼做了
使用流式接口寫法主要的好處是程式碼讀起來簡潔好懂得多
下面是Python範例:
class Msg:
def __init__(self, msg):
self.msg = msg
self.receiver = ""
def to(self, receiver):
self.receiver = receiver
return self
def send(self):
print(f"Send {self.msg} to {self.receiver}")
return self
Msg("hello").to("Mary").send()
Msg("hello").to("Mary").send() 這段看起來真的整潔好懂
實作的關鍵就是return self,回傳物件自己本身
之後有機會也寫多嘗試流式接口寫法
另外在這有讀到建議是回傳一個新的物件而非self,https://stackoverflow.com/questions/37827808/fluent-interface-with-python
用意是防止從別的變數改動到原物件
沒有留言:
張貼留言