2017年4月21日金曜日

開発環境

メタプログラミングRuby 第2版(Paolo Perrotta (著)、角 征典 (翻訳)、オライリージャパン)の1部(メタプログラミング Ruby)、4章(水曜日: ブロック)、4.1(ブロックの日)、4.1.2(ブロックの基本)、4.2.1(using キーワード)を JavaScript で取り組んでみる。

HTML5

<pre id="output0"></pre>
<button id="run0">run</button>
<button id="clear0">clear</button>

<script src="sample1.js"></script>

JavaScript

let btn0 = document.querySelector('#run0'),
    btn1 = document.querySelector('#clear0'),
    pre0 = document.querySelector('#output0'),
    p = (x) => pre0.textContent += x + '\n';

let aMethod = (a, b, fn) => a + fn(a, b);

let aMethod1 = (fn) => {
    if (fn === undefined) {
        return 'ブロックがありません';
    }
    return fn();
};

let Resource = () => {
    let that = {},
        disposed,
        dispose = () => disposed = true,
        isDisposed = () => disposed;

    that.dispose = dispose;
    that.isDisposed = isDisposed;
    
    return that;
};

let jsWith = (resource, fn) => {
    try {
        fn();
    } catch (e) {
        // 
    } finally {
        resource.dispose();
    }
};

let output = () => {
    p('4.1 ブロックの基本');
    p(aMethod(1, 2, (x, y) => (x + y) * 3));
    p(aMethod1());
    p(aMethod1(() => 'ブロックがあるよ!'));

    p('4.2 クイズ: Ruby#');

    let r = Resource();
    jsWith(r, () => {
        throw {type: 'Error', message: 'error'}
    });
    p(r.isDisposed());
};

btn0.onclick = output;
btn1.onclick = () => pre0.textContent = '';

output();




  









						

0 コメント:

コメントを投稿