Go 並沒有內建 map(),但 Hugo 則提供 apply() 類似 map() 功能。
Version
Hugo 0.126.2
Template
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{{ $title := "Hugo Lab" }}
<title>{{ $title }}</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
{{ $companies := slice "apple" "google" "microsoft" }}
{{ $companies = apply $companies "strings.FirstUpper" "." }}
<ul>
{{ range $companies }}
<li>{{ . }}</li>
{{ end }}
</ul>
</body>
</html>
Line 11
{{ $companies := slice "apple" "google" "microsoft" }}
slice():定義$companiesslice
Line 12
{{ $companies = apply $companies "strings.FirstUpper" "." }}
apply():類似 JavaScript 的map()- 第一個參數:傳入 Collection 名稱
- 第二個參數:傳入 function 名稱,必須以 String 形式傳入,而非 function
- 因為
apply()無法搭配 pipe,只能再回傳到原來的變數
Line 13
<ul>
{{ range $companies }}
<li>{{ . }}</li>
{{ end }}
</ul>
range():列舉 slice
Conclusion
- Hugo 並非完全支援 FP,
apply()應該將第一個參數放到最後支援 pipe,且第二個參數也無法直接傳入 function,只能以 String 方式傳入 function 名稱