2023年政策修订增补工作正在进行中,欢迎参与!
  • Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

模板討論:Loop

萌娘百科,萬物皆可萌的百科全書!轉載請標註來源頁面的網頁連結,並聲明引自萌娘百科。內容不可商用。
跳至導覽 跳至搜尋

若干建議

@東東君

考慮到這個模板已經應用到不少地方了,這些建議又會對模板的用法又一些影響,所以先發討論頁討論一下。

關於可否捨棄params參數

目前對於三對大括號包裹的參數(模板的接收參數)是使用params進行傳遞,但是這樣不僅學習成本較高[來源請求],而且不支持{{{1|red}}}的形式,因此可否如此處理:

  1. 模塊:loop進行一些處理(特殊:固定連結/2274042),使得調用Lua模塊時可以直接處理模板的接收參數;
  2. 然後捨棄params參數,要求當需要使用「模板的接收參數」時直接調用Lua模塊,也即將{{loop|...}}替換為{{#invoke:loop|main|...}}

例子可見特殊:固定連結/2274080特殊:固定連結/2274084中對它進行了調用。

關於多層循環可否全部使用{{loop}}

目前多層循環是使用{{loop2}}、{{loop3}},最多支持3層循環嵌套且存在bug(特殊:固定連結/2274128)。

可否將其調整為全部使用{{loop}},見特殊:固定連結/2274084,然而依然有bug

--Nzh21討論) 2018年12月31日 (一) 15:35 (CST)

(+)同意 看起來好像不錯--東東君討論) 2018年12月31日 (一) 19:24 (CST)

同類型模塊{{While}}的合併請求

近日在使用{{Loop}}時遇到了需要不斷測試循環條件的情況,但{{Loop}}確實無法達到目的,因此模仿着寫了{{While}}模塊用以代替解析器函數{{#while:}}{{#dowhile:}}

除了對內層循環的處理功能函數pack_inner_loop由於涉及大量字符串處理字多看得頭大而沒有修改以外,兩個功能的核心代碼均已在{{While}}模塊中實現。

現在想探討一下把這兩個功能合併入{{Loop}}的可行性,以及我的一些建議:

  1. 類似功能模板存在一個就夠了,不然難以記憶。
  2. 目前的{{Loop}}和{{While}}代碼結構相近,且參數格式我也有意沿用了前者,合併工程量不大。
  3. 就算模板層面難以合併,Lua模塊可以合併為一個,由多個模板調用,舉個例子:
    • {{Loop}}通過#invoke:Loop|loop調用#loop功能。
    • {{While}}通過#invoke:Loop|while調用#while功能。
    • {{DoWhile}}通過#invoke:Loop|dowhile調用#dowhile功能。

長話短說就是跪求大佬接手一下

@Nzh21東東君--サンムル討論) 2020年3月3日 (二) 18:39 (CST)


語法:
{{#invoke:While|[do]while|condition=<nowiki>【条件语句】</nowiki>|do=<nowiki>【循环体】</nowiki>}}
參數:
【條件語句】外側必須包裹nowiki標籤(內層循環不需要),允許使用模板的無名參數及在While上下文外的全局變量。
【循環體】外側必須包裹nowiki標籤(內層循環不需要),允許使用模板的無名參數及全局變量。

懶惰 + 無能為力,抱歉_(:з」∠)_ --東東君討論) 2020年3月3日 (二) 20:51 (CST)

模塊合併了,模板咕咕咕---Nzh21討論) 2020年3月4日 (三) 10:28 (CST)