print() 的變數作用域行為應該與其他所有函數的行為一致。是什麼促使你提出這個願望清單請求?
我花了很多時間調試一個變數作用域的問題。如果在函數內部使用 `{default local}`(我幾乎總是這樣做),那麼除非用 `::` 明確指定作用域(我之前並不知道這一點),否則函數無法存取全域變數。然而,即使沒有 `::`,`print()` 函數也會默默地查找自身——考慮到 `print()` 是一個非常基礎的調試工具,這讓人非常困惑!
您希望看到哪些改進?
在變數作用域方面,`print()` 函數的行為應該與其他函數相同。
為什麼這個想法很重要?
目前的行為不合邏輯且前後矛盾。
JMP19.1.1。
自動化和腳本編寫回覆:print() 函數的變數作用域行為應與其他函數保持一致 - 狀態已變更為:需要更多資訊嗨@JohnJoyceFlusso - 感謝您提交此需求。您能否提供一個腳本來示範此行為?
回覆:print() 的變數作用域行為應該與其他所有函數保持一致以下是一個示範此問題的最小腳本:Print() 函數可以正常運作,但 msgbox() 函數無法正常運作。
注意:這並非一個實用功能,只是為了示範問題。
遺憾的是,在變數作用域方面,print() 函數的行為與其他函數不同。
我從未見過其他語言會這樣做。這似乎有問題。
我的建議是,Print() 函數不應該與其他函數有所不同。
dummy = "Hello";
test = Function( {},
{default local},
Print( dummy );
msgbox( dummy );
);
test();
回覆:print() 的變數作用域行為應該與其他所有函數保持一致很抱歉將 msgbox() 函數與系統內建函數混淆了,該函數實際上是我自己編寫的,並非系統內建函數。
這裡有一個例子可以說明我的觀點……第一次嘗試使用單選按鈕時,沒有顯示任何選項,因為「options」沒有在本地定義;然而 print() 卻可以神奇地訪問它。
一旦我在本地定義了選項,同樣的單選按鈕第二次就能正常運作了。
關鍵在於 print() 函數的行為不應該與其他任何函數不同,否則將其用作偵錯工具就會變得有些棘手。
options = {"A", "B"};
test = Function( {},
{default local},
Print( options );
New Window( "Pick one",
<
<MODAL></MODAL>
<BR /> <BR />
回覆:print() 的變數作用域行為應該與其他所有函數保持一致@JohnJoyceFlusso
你仍然可以在函數內部使用 `eval( eval expr( ) )` 來存取「options」變數。對我來說,這樣做是有效的:
options = {"A", "B"};
test = Function( {},
{default local},
Print( options );
eval( eval expr( New Window( "Pick one",
<
<MODAL></MODAL>
回覆:print() 的變數作用域行為應該與其他所有函數保持一致謝謝,是的,確實如此(就像透過 ::options 存取「選項」一樣,這是技術支援人員指出的)。
我的問題仍然是 Print() 函數的行為與其他函數不同,這不合邏輯。