不変なデータの定義と使い方
var empty = (_)=>{ return null } var get = (key, obj) =>{ return obj(key) } var set = (key, value, obj)=>{ return (key2) =>{ if(key===key2){ return value }else{ return get(key2,obj) //関数setに引数を渡している場合、セットされているobjの中身はempty } } } a = set('a','b',empty) //emptyにかっこはつけない 関数が返っている console.log(get('a', a)) // a console.log(get('hi', a)) // null
setで返すものは関数。
setすると、return (key2) =>{…}の”…”部分に関数を呼び出すときに渡した引数、key、value、objの値が設定される(設定?定義?される)。
getするときにkeyが違うときには、get(key2, empty)となり、empty(key2)、そしてnullを返す。