計算機科学のブログ

関数 アロー関数 高階関数、引数

入門JavaScriptプログラミング (JD Isaacks(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT3(関数)、LESSON 17(アロー関数)、17.5(練習問題)、Q17-1の解答を求めてみる。

コード

function TRANSLATE(str, lang) {
    switch (lang) {
        case 'sv': return str.replace(/e/g, 'é');
        case 'es': return str.replace(/n/g, 'ñ');
        case 'fr': return str.replace(/e/g, 'ë');
    }
}

const translator = lang =>
    (strs, ...vals) =>
        strs.reduce(
            (all, str) =>
                all + TRANSLATE(vals.shift(), lang) + str
        );

const fr = translator('fr'),
    sv = translator('sv'),
    es = translator('es'),
    word = 'nice';

console.log(fr`${word}`);
console.log(sv`${word}`);
console.log(es`${word}`);

入出力結果(Console)

% node sample1.js
nicë
nicé
ñice
%