在 HA.KI blog 的範例 中最後一個也舉出了使用 regular expression 的技巧:
def money = '12 Euro' def regexp = /(\d+) (\w+)/ def (exp, amount, currency) = (money =~ regexp)[0] assert '12' == amount assert 'Euro' == currency
不過, 對於 List 的表述方式:
listObject[index] // 或 listObject.get(index) // 保守寫法: listObject?.get(index)是存在當掉的風險的, 因為 index 有可能超過索引範圍。
以上例來說, 只要 money 的值不是依 '數值 幣別' 呈現就會發生。 (例如 'Euro 12')
所以, 可以改善的技巧是用 inject() [參考上篇Groovy 的 inject() method 應用] 來呈現 List 物件即可:
def (exp, amount, currency) = (money =~ regexp)?.inject([]) { res, itm -> res += itm }ps. 參考資訊 http://rosettacode.org/wiki/Return_multiple_values
沒有留言:
張貼留言