我設置了一個接受一些Number參數的自定義類,但我需要限制這些參數,並希望知道這樣做的最佳方式。ActionScript參數篩選
目前,我只是簡單地調用if語句,並且如果數字高於或低於接受的值,則拋出錯誤。例如,有一個參數可以接受和角度,但只能在0和90之間。在我將它輸入爲uint的情況下,所以現在我只需檢查它是否在90以上。還有一個參數Number typed參數只接受範圍在0.0和1.0之間的值。
我的方法是使用if語句並拋出erros過濾參數的常用方法嗎?
我設置了一個接受一些Number參數的自定義類,但我需要限制這些參數,並希望知道這樣做的最佳方式。ActionScript參數篩選
目前,我只是簡單地調用if語句,並且如果數字高於或低於接受的值,則拋出錯誤。例如,有一個參數可以接受和角度,但只能在0和90之間。在我將它輸入爲uint的情況下,所以現在我只需檢查它是否在90以上。還有一個參數Number typed參數只接受範圍在0.0和1.0之間的值。
我的方法是使用if語句並拋出erros過濾參數的常用方法嗎?
是的。解決這個問題的唯一方法是使用類型系統,例如創建一個只能包含0到90之間數字的AcuteAngle類。但是,對於你正在做的事情,最好是隻有if語句。
你唯一的選擇是靜靜地將輸入限制在合適範圍內(例如,angle = angle%90;)。官方的AS庫傾向於更頻繁地使用這種方法,但它們不是非常一致。
我同意 - 沒有特別的替代方法來記錄函數期望接收的內容,並決定它是否應該在接收到其他內容時拋出錯誤。 – fenomas 2010-06-10 05:06:06
只是一個說明。使用提示進行驗證是一個壞主意。你不會真的阻止傳遞負數(如果你傳遞一個文字,你會得到一個警告)。但實際上,數字的位模式將被解釋爲無符號,所以如果你的函數被調用-1,你會得到4294967295(相同的位模式:0xffffffff)。現在,這不會通過你的支票(n <= 90),但如果你拋出一個錯誤,你可能會設置一個錯誤信息來解釋錯誤。在這種情況下,你會告訴誰打電話給你,他們通過了4294967295,這很可能是令人困惑的。 – 2010-06-10 03:18:45