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()
:定義$companies
slice
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 名稱