了解 Lambda 中的閉包
嘗試在循環中使用 lambda 將命令綁定到按鈕時會出現一個常見問題。它不會列印預期的索引,而是一致地列印循環變數的最終值。這是由於閉包的變數解析機製而發生的。
在提供的範例中:
1 2 3 |
|
當執行 lambda 時,它將變數 i 解析為其當時的值。由於此時循環已完成,i 已增加到 5,導致所有按鈕列印相同的索引。
要修正此問題,可以使用語法 command= lambda i= 在 lambda 內建立局部變數我:。這會將 i 的目前值指派給 lambda 閉包捕獲的局部變數。
1 2 |
|
現在,lambda 將以每個按鈕的正確索引值執行。請注意,可以為局部變數分配任何名稱,以確保它與循環變數保持不同。
以上是在循環中使用 lambda 時,為什麼我的所有按鈕都會列印相同的索引?的詳細內容。更多資訊請關注PHP中文網其他相關文章!