什麼是宣告式元件?

時間 2021-06-04 02:31:01

1樓:陶文

首先要明白介面不是只在時間 t 渲染一次。而是時間 t1 渲染出乙個結果,時間 t2 渲染出乙個結果,時間 t3 渲染出乙個結果…… 那麼就有兩種做法

你要通過 add / remove 的方法來描述,f(t1) 需要新增多少元件,然後 f(t2) 要在 t1 的結果上刪掉什麼,新增什麼。這個刪掉的過程需要用什麼動畫效果遷移過去,新增的東西要用什麼動畫效果顯示出來也就是 t1 到 t2 過程中還可以再細分出更細的 frame 來描述每乙個 frame 都幹了什麼。這個就叫 imperative,具體指定每乙個步驟的時序邏輯。

另外乙個相對應的做法叫 declarative。就是你不能掌控每乙個時間 t1, t2, t3... 下到底都幹一些什麼。

但是你可以告訴計算機,介面上「始終」有什麼。這裡的始終的意思就是和具體的時間是無關的,只要輸入是這個,輸出就一定是這個。當你用時間無關的方式,也就是所謂的宣告式了。

其實也就是你的函式的輸入裡沒有時間 t,但是有其他的業務邏輯上的輸入。

declarative 最終都是要變成 imperative 來執行的。所以只是框架作者幫你把沒有寫出來的 f(t1), f(t2), f(t3)... 給補充完整了。

為什麼人類喜歡 declarative,原因就是不用去思考時間這個維度。你在思考時間的時候是用空間去模擬的,會帶來很大的開銷。

如何理解防衛式宣告?

50包郵 其實挺簡單的,舉個例子就行 假設有2個.h檔案,分別是a.h和b.h a.h的內容是 ifndef A H define A H endif b.h的內容是 ifndef B H define B H include a.h endif 然後在main.c裡面呼叫的是 include a....

什麼叫元件化開發

如果你是乙個木匠,客戶要訂十把椅子,你不可能把乙個樹砍倒,慢慢用鋸子和刨子和錘子把乙個樹掏空成乙個椅子吧 傳統的前端就是這樣幹 這要多久才能搞出一把椅子,而且對材料利用率很低。客戶要求盡快做出來十把椅子,後來想到乙個辦法把一把椅子分割成不同易於切割打磨的零件 元件 用模具批量生產這些零件,這時候發現...

C 11中能否顯式宣告乙個lambda型別的變數,而不用auto

所以,不存在符合標準的 不利用編譯器內部實現特徵 的顯式宣告lambda型變數的方法,是這樣嗎?是。你可以寫個程式,用 typeid 列印出型別的名字看一下。include include template T void printType T obj intmain printType print...