ECMAScript 使用 [0]
取得 String 第一個 char,只可惜這是 Operator 而非 Function,因此無法使用 Function Composition,Ramda 另外提供了 head()
供 FP 使用。
Version
macOS Catalina 10.15.2
VS Code 1.41.1
Quokka 1.0.274
Ramda 0.26.1
Imperative
let data = 'abc'
let head = str => str[0]
head(data) // ?
Imperative 會直接使用 []
取得第一個 char。
Functional
import { nth } from 'ramda'
let data = 'abc'
let head = nth(0)
head(data) // ?
Functional 可使用 nth()
以 point-free 取得第一個 char。
Ramda
import { head } from 'ramda'
let data = 'abc'
head(data) // ?
Ramda 已經提供 head()
可直接使用。
head()
String -> String
取得 string 的第一個 char
import { head } from 'ramda'
let data = ''
head(data) // ?
head()
若取不到資料,會回傳 empty string,而不是 undefined
。
Conclusion
head()
若搭配 array,若找不到回傳undefined
;若搭配 string,找不到會回傳 empty string,這是兩者不同之處