實務上常遇到將 2 個 String 合併成單一 String,Ramda 提供了 concat()
。
Version
macOS Mojave 10.14.5
VS Code 1.35.1
Quokka 1.0.227
Ramda 0.26.1
Imperative
let first = 'Java';
let second = 'Script';
// concat :: String -> String -> String
let concat = str1 => str2 => str1 + str2;
concat(first)(second); // ?
建立 concat()
,可直接使用 +
將兩 string 合併。
String.prototype.concat()
let first = 'Java';
let second = 'Script';
// concat :: String -> String -> String
let concat = str1 => str2 => str1.concat(str2);
concat(first)(second); // ?
String.prototype
內建 concat()
,直接傳入 data 即可。
就功能而言兩者都一樣,但
String.prototype.concat()
屬 OOP 風格,為 data 的 method,而concat()
為 FP 風格,data 以 argument 傳入 function,且為最後一個 argument,方便 point-free
Ramda
import { concat } from 'ramda';
let first = 'Java';
let second = 'Script';
concat(first)(second); // ?
事實上 Ramda 已經內建 concat()
,可直接使用。
concat()
String → String → String
將兩個相同結構的 array 合併成單一 array
[a]
:第一個 string
[a]
:第二個 string
[a]
:回傳合併後的 string
Conclusion
concat()
不只能用在 string,也能用在 array- Ramda 的
concat()
其實很簡單,且 array 與 string 都能用,也展現了 function 與 data 分離後,不再只是單一型別的 method,可套用在不同型別上