我有一些包含字符串的嵌套ListMaps。對於這些字符串中的一些,雖然我想返回當前時間。我對scala很陌生,但我覺得這個語言是圍繞這個「函數作爲變量」的主題構建的,這應該是可能的。到目前爲止,我有下面的代碼,但是它在定義時進行評估,而我希望在每次讀取值時進行評估。從ListMap調用動態字符串
val sql_dynamic = ListMap("user_history_create_date" ->
{(new SimpleDateFormat("yyyy-MM-dd")).format(new Date())},
"fan_history_create_time" ->
{(new SimpleDateFormat("HH:mm:ss")).format(new Date())});
我試圖使這些匿名函數「定義」的嘗試各種語法,但只有管理編譯錯誤。
我覺得這是非常接近我想要做的。唯一的是我正在查看其他值爲靜態字符串的ListMap,因此我無法在這些字段上調用.get.apply()。根據我的理解,這是匹配{}可能有用的地方。你提到的這個新的代碼返回一個Function0 [字符串],所以我改變了我的for循環返回[字符串,對象]寫了這樣:VAL SV = V匹配{ \t \t \t \t \t \t \t如果s:字符串=>小號 \t \t \t \t \t \t \t方案F:Function0 [字符串] => f.get.apply() \t \t \t \t \t \t} –
但是我得到兩個編譯錯誤。一種說法是:類型pattern()=>中的非變量類型參數String由於通過擦除消除,因此未選中字符串。另一個說:value get不是()=> String [error] case f:Function0 [String] => f.get.apply() –
是的,我同意它不是一個好主意。 99%的時間將會是靜態的,並且會有大量的重構,並且只有一個邊界情況我必須讀取它。 –