重整選項時,hidden選項沒隱藏
307587 opened this issue · 4 comments
如
if (!音韻地位) return [
['注音符號\n否的話就用國際音標', true],
['ㄬㄭ|ㄬ、ㄭ音標\n啟用「注音符號」時無效', [2, 'ȵ、ɿ、ʅ', 'ɲ、ɹ̩、ɻ̍'], { hidden: 選項.注音符號 === true }],
['介母|介母寫成半元音而非元音\n元音:iuy\n半元音:jwɥ\n啟用「注音符號」時無效', false, { hidden: 選項.注音符號 === true }],
['ㄚ|ㄚ元音\nㄧㄞ:寬式/iai/、嚴式[iæi]\nㄧ、ㄩ後的ㄢ:寬式/-an/、嚴式[-ɛn]', [2, '嚴式', '寬式'], { hidden: 選項.注音符號 === true }],
['ㄨㄣ|舌冠聲母後的ㄨㄣ讀音\n趙元任《國音新詩韻》:「ㄨㄣ」也可以一律照樣拼念作「ㄨㄜㄋ」,但是在「ㄉ,ㄊ,ㄋ,ㄌ;ㄗ,ㄘ,ㄙ」七個聲母後頭可以省去「ㄜ」音念「ㄨㄋ」', [2, 'un', 'uən'], { hidden: 選項.注音符號 === true }],
['喉塞|標示入聲喉塞音韻尾', true, { hidden: 選項.注音符號 === true }],
['調式', ['調符',
'調值(趙元任)', '調值(王璞)', '調線(趙元任)', '調線(王璞)',
...(選項.注音符號 === false ? ['附標'] : []), '調號上標', '調號', '調符',
]],
];
代碼貼到推導器時hidden選項正確隱藏,按重整後,hidden選項沒隱藏,要按兩下注音符號的剔才正確隱藏
想了想,這是 expected behaviour,應該寫成 { hidden: 選項.注音符號 !== false }
將
tshet-uinh-autoderiver/src/actions.ts
Line 79 in f03085b
newState.parameters = ParameterSet.from(newState.input).refresh(newState.input);
固然可以修復這個問題,但這樣方案會被執行兩次,不符合 initial state 的定義。@syimyuzya 怎麼看?
想了想,這是 expected behaviour,應該寫成
{ hidden: 選項.注音符號 !== false }
將tshet-uinh-autoderiver/src/actions.ts
Line 79 in f03085b
改成newState.parameters = ParameterSet.from(newState.input).refresh(newState.input);固然可以修復這個問題,但這樣方案會被執行兩次,不符合 initial state 的定義。@syimyuzya 怎麼看?
不需要,而且最好不要這樣。
選項
的初值是空物件 {}
,這是必要的「初始化」狀態。這個行為也是寫進了推導器的「幫助」頁面的。
而且對於會寫代碼的人來說,「初始化」這件事情可以算是不言自明的。這時候再來個「第二次」運行,不僅讓方案的「生命週期」變複雜了,還可能會由此引入額外的複雜動態行為。【畢竟代碼如果真的「根本沒寫初始化的邏輯」,那指望運行兩次或若干次後就「收斂」也是不可能的(這甚至等價於「停機問題」了)。
=== true
和!== false
有什麼不同?
=== true
和!== false
有什麼不同?
別忘了最初一次運行是「初始化」,初始化時所有設定項都還沒有值,是 undefined
。
另外,x === true
和 x !== false
兩種寫法都不好,最好是寫 !!x
(很多時候也可以直接寫 x
)。