JSL:if - else -> 找到逗號?你好,
我經常面臨這樣的問題:代碼無法工作,因為十分之一的分號是逗號,或者屬於 if 塊的一個逗號實際上丟失了。
是否有一個簡單的技巧可以使 if-else 子句中的塊更加明顯?
高級統計建模消費者和市場研究實驗設計可靠性分析回复:JSL:if - else -> 找到逗號嗎?很酷,很方便:)
回复:JSL:if - else -> 找到逗號嗎?將 If() 語句粘貼到公式編輯器中有助於快速發現它。

回复:JSL:if - else -> 找到逗號嗎?哦不-再一次,在對我的代碼進行一些複製和粘貼並重新排列之後,它的行為就好像 if 語句中的某處有錯誤的逗號一樣
- 我希望有一個突出顯示功能已在 Jmp17 中實現:)
嗯,還沒……
所以我回到帖子中的建議並尋找一些幫助。
在閱讀建議時第一次我想:聽起來不錯,當我遇到下一個問題時,他們中的很多人都會幫助我。
現在,當搜索錯誤放置的逗號時,實際上是@tx尼爾森的建議這幫助我找到了它:
點擊重新格式化腳本並檢查縮進與預期不符的地方。
非常簡單——正如預期的那樣。
另一方面,在一次又一次搜索錯誤的逗號時,其他建議讀起來有點像
”不應該有的地方有一個逗號?你必須找到它並糾正它”。
結合這兩種方法來編寫代碼
1)以可讀的方式
2)使得重新格式化腳本不改變格式。
可以放一個空行在逗號前面如果聲明。 這將防止重新格式化腳本將逗號移動到上一行的末尾。不幸的是,它還會將逗號後面的代碼移到下一行,只將逗號留在那裡 - 這使得代碼有點“寬網格”並且難以閱讀。 嗯。
Names Default To Here( 1 );
dt = Current Data Table();
If(
Is Empty( dt ),
Print( "no table found" );
,
N Rows( dt ) == 0,
Print( "table has no data" );
, // else
Print( "ok" )
);
自己嘗試一下:錯誤的逗號在哪裡
代碼由提供不穩定的攻擊,但在應該有分號的地方加了逗號:
Names Default to Here( 1 );
dt = Current Data Table();
Try(
If( Contains( dt << Get Column Names, As Name( "height" ) ),
mean = Col Mean( dt:height );
max = Col Max( dt:height );
min = Col Min( dt:height );
std dev = Col Std Dev( dt:height ),
Write( "\!NSome stats on :HEIGHT:",
"\!NMin: ", min,
"\!NMax: ", max,
"\!NMean: ", mean,
"\!NStd Dev: ", std dev
)
,
Contains( dt << Get Column Names, As Name( "weight" ) ),
mean = Col Mean( dt:weight );
max = Col Max( dt:weight );
min = Col Min( dt:weight );
std dev = Col Std Dev( dt:weight );
Write( "\!NSome stats on :WEIGHT:",
"\!NMin: ", min,
"\!NMax: ", max,
"\!NMean: ", mean,
"\!NStd Dev: ", std dev
)
,
Contains( dt << Get Column Names, As Name( "age" ) ),
mean = Col Mean( dt:age );
max = Col Max( dt:age );
min = Col Min( dt:age );
std dev = Col Std Dev( dt:age );
Write( "\!NSome stats on :AGE:",
"\!NMin: ", min,
"\!NMax: ", max,
"\!NMean: ", mean,
"\!NStd Dev: ", std dev
)
,
Print( "Cannot find columns 'height', 'weight', or 'age'" )
)
,
Print( "mistakes were made" )
)
查看更多... 回复:JSL:if - else -> 找到逗號嗎?你好@hogi ,
這不是您具體問題的準確答案。 但我認為 Visual Studio 的 jsl 擴展總體上提供了更好的腳本體驗。
https://marketplace.visualstudio.com/items?itemName=VinceFaller.jmp-scripting
回复:JSL:if - else -> 找到逗號嗎?我同意@jthi ,我避免使用重新格式化。作為一名程序員,我的工作就是製定一個清晰的風格指南,並在編寫代碼時強制執行它。
註釋如
, // else
當代碼行數較多時,可以幫助給出直觀的指導。
我也認為將逗號與主要 if 語句對齊是更好的風格。
回复:JSL:if - else -> 找到逗號嗎?據我所知。 目前,您可以從首選項腳本編輯器頁面找到一些更改。
另外,編寫可定制的自動格式化程序並不是最簡單的任務(至少我這麼認為),我什至不確定這是否是一個好主意。 我認為自以為是的自動格式化程序比完全可定制的自動格式化程序更常見,而且很可能更好。 但 JSL 沒有可供遵循的風格指南,因此沒有常見的自動格式化程序所基於的意見(JSL 是非常小的語言)。
這是關於 Python 黑色自動格式化程序的視頻Łukasz Langa - Life Is Better Paint Black,或者:如何停止擔憂並擁抱自動格式化 (youtube.com)
回复:JSL:if - else -> 找到逗號嗎?
@jthi寫道:
正確配置[重新格式化]...
有沒有辦法配置重新格式化?
回复:JSL:if - else -> 找到逗號嗎?我使用有點類似的風格@ErraticAttack但我將條件分隔到與 相同的行,甚至可能評論 else 並捕獲是否塊很長
Names Default To Here(1);
dt = Current Data Table();
Try(
If(Is Empty(dt),
print("no table found");
, N Rows(dt) == 0,
print("table has no data");
, N Rows(dt) <= 10,
print("not enough data");
, // else
print("ok")
);
, // catch
show(exception_msg);
);
我嘗試以避免在我的腳本變得足夠長/複雜後使用 jsl 重新格式化,因為我通常必須在使用後進行清理。 即使重新格式化像我需要的那樣靈活,我想我也不會費心正確配置它......
回复:JSL:if - else -> 找到逗號嗎?我的解決方案是將重要的逗號放在圍欄的水平上。下面是一個示例 - 請注意,分隔 IF 塊的逗號位於 IF 語句級別,對於 TRY 也是如此
Names Default to Here( 1 );
dt = Current Data Table();
Try(
If( Contains( dt << Get Column Names, As Name( "height" ) ),
mean = Col Mean( dt:height );
max = Col Max( dt:height );
min = Col Min( dt:height );
std dev = Col Std Dev( dt:height );
Write( "\!NSome stats on :HEIGHT:",
"\!NMin: ", min,
"\!NMax: ", max,
"\!NMean: ", mean,
"\!NStd Dev: ", std dev
)
,
Contains( dt << Get Column Names, As Name( "weight" ) ),
mean = Col Mean( dt:weight );
max = Col Max( dt:weight );
min = Col Min( dt:weight );
std dev = Col Std Dev( dt:weight );
Write( "\!NSome stats on :WEIGHT:",
"\!NMin: ", min,
"\!NMax: ", max,
"\!NMean: ", mean,
"\!NStd Dev: ", std dev
)
,
Contains( dt << Get Column Names, As Name( "age" ) ),
mean = Col Mean( dt:age );
max = Col Max( dt:age );
min = Col Min( dt:age );
std dev = Col Std Dev( dt:age );
Write( "\!NSome stats on :AGE:",
"\!NMin: ", min,
"\!NMax: ", max,
"\!NMean: ", mean,
"\!NStd Dev: ", std dev
)
,
Print( "Cannot find columns 'height', 'weight', or 'age'" )
)
,
Print( "mistakes were made" )
)
回复:JSL:if - else -> 找到逗號嗎?JMP 應該聘請您擔任產品質量職務! 愛它!
回复:JSL:if - else -> 找到逗號嗎?感謝您的支持 :)
這是願望:
JSL 編輯器中優化的語法突出顯示
回复:JSL:if - else -> 找到逗號嗎?我喜歡您對此的想法,以及您對 JMP 和 JSL 改進的其他想法......我建議您將這些添加到 JMP 願望清單中。這會將您的意見傳達給真正能夠做出改變的個人。
回复:JSL:if - else -> 找到逗號嗎?嗯,我只是想:
如果Jmp中有這個神奇的GraphBuilder可以幫助你在5秒內生成各種圖表,
還應該能夠在 5 秒內分析複雜的 If & Match 結構,以發現結構中的任何錯誤。
通過“重新格式化腳本”的自動縮進非常棒 - 它顯示了代碼結構的完整層次結構 - 一目了然。
但這也是缺點:完全的等級制度
這就是為什麼人眼需要一些時間來分析信息,甚至需要大腦的一些支持才能做到這一點。
有一些方法可以以一種“眼睛”需要大腦較少支持的格式對信息進行編碼——正如人們可以從中學到的@XanGregg :
全體會議:所有圖表都是錯誤的,但有些是有用的 - Xan Gregg
沿著這個思路思考...
A 單擊括號以突出顯示 If 語句非常有用
- 但如果所包含文本的陰影不均勻(如左圖所示),那就太好了 - 但是以一種有意義的方式(如右圖所示)。
Jmp 擁有所需的所有信息(它使用它來調整縮進) - 為什麼不使用它來著色?
很明顯,右圖中沒有任何其他信息,無法從左側的縮進中推斷出來。
縮進甚至可以顯示更多內容:複雜代碼結構的完整層次結構一目了然。 是的。
但正確的圖像看起來很有說服力,對吧?
編輯:鏈接到願望

回复:JSL:if - else -> 找到逗號嗎?我喜歡這個人在這裡必須說的話。
JMP 不關心這種格式,但如果您沒有紀律以反映顯示框層次結構的方式編寫代碼,您很快就會陷入混亂。
此聲明並不專門適用於展示盒,而是普遍適用於 JSL。 我仍在自我學習,但將代碼直觀地構造為邏輯部分是一項很好的時間投入,即使它有時會變成取證練習(巧合的是,這是大多數學習往往發生的地方)。
回复:JSL:if - else -> 找到逗號嗎?右鍵單擊 JSL 窗口,然後選擇“重新格式化腳本”。
這會將塊對齊到標準凹口處。
您還可以單擊任何函數或矩陣邊界括號 {} [],它將選擇匹配的括號
回覆:JSL:if - else -> 找到逗號嗎?一個很好的例子,可能會出錯:
x= if(<BR />// 1st test<BR /><BR /> 1==3,
1
, // 2nd test
1==5,
2,
, // others
3
)
執行程式碼後,x= ...
回覆:JSL:if - else -> 找到逗號嗎?夥計們,這幾乎是完美的:

https://community.jmp.com/t5/Discussions/If-statement-comma/mp/824212/highlight/true#M100363
很好的解決方法
....直到:folded_hands: JSL 編輯器中的最佳化語法突出顯示可用。