のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,908人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    元スレ+ JavaScript の質問用スレッド vol.115 +

    JavaScript覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    601 = :

    どう見ても責任>>552にあるだろw
    なんで謝るんや

    604 = :

    >>598
    循環小数って知ってる?
    小学校じゃ習わないか
    ごめんね

    605 = :

    >>604
    有理数か分数って言え
    自然数⊂整数⊂有理数(分数)⊂無理数⊂実数⊂複素数

    606 = :

    なんでお前ら下らないことで言い争いしてるの
    両方ともよそでやれよ

    607 = :

    関数言語的なプログラミングをすると、
    一つの処理の中で二種類以上のものを作ることに違和感を感じます
    reduceが一つのものしか返さないように出来ているということもありますが、
    単純に、美しくない、関数言語のパラダイムとそぐわない、と感じます
    こういう場合どうするのがいいのでしょうか
    関数言語におけるデザインパターン的なものとか、出てるんでしょうか

    608 = :

    >>607
    ECNMAScriptは関数言語じゃない

    609 = :

    >>608
    それがどうかしたの?

    610 = :

    >>609
    関数言語でないのに関数言語的アプローチを目指すことが間違い

    611 = :

    JavaScriptは関数型でもオブジェクト指向型でもありません
    無理やり関数型やオブジェクト指向っぽく書こうとするのはやめましょう

    612 = :

    >>610
    その言語の特徴を活かしたアプローチをスレばいいんじゃないの?

    つまり、関数型とオブジェクト指向の両方を
    バランスよく取り入れた言語なんだから、
    関数型とオブジェクト指向の両方のアプローチを
    バランスよく行えばいい。

    どちらにしろ何らかのアプローチをしないといけないんだしさ。

    613 = :

    >>612
    関数型言語的性質がないから>>607のような問題が起きているのだと思うのだけど
    それでも異論があるなら、関数言語的アプローチとしてあなたが具体案を提案すべきでは?

    614 = :

    >>607の問題ってなんですか?
    一つの処理で二種類以上のものを作ることでしょうか?
    関数型言語では、そんなことしないですよ?

    JavaScriptは関数型言語の思想が混じっているので、
    関数言語的アプローチでいうからこそ、
    >>607の問題はできないのです。関数型言語だから。

    615 = :

    >>614
    横からだけど、ちゃんと質問に沿った回答を心がけた方がいいよ
    >>612とニュアンスが微妙に変化してるし、その突っ込みは本当に必要だったの?
    初めから>>614の回答だけなら何も言わないけどさ

    616 = :

    >>614
    > 一つの処理で二種類以上のものを作ることでしょうか?
    詳しくは知らんのだが、関数型言語はリストで返り値を持てたような
    俺の記憶違いかな?
    詳しい人の説明を求む

    617 = :

    それならJavaScriptも配列を返せばいいじゃない。

    618 = :

    http://developer.mozilla.org/ja/docs/Web/JavaScript/New_in_JavaScript/1.7
    分割代入 (destructuring assignment) は、配列やオブジェクトの

    リテラルの構造とそっくりの構文を使って、配列やオブジェクトからデータを抽出することを可能にします。

    複数の値を返す

    分割代入のおかげで、関数は複数の値を返すことができます。関数から配列を返すこと自体はいつでもできたものの、分割代入はさらなる柔軟性を提供します。

    function f() {
    return [1, 2];
    }
    見ての通り、すべての返り値を角カッコで囲んだ、配列に似た構文を使ってその結果を返します。
    この方法で任意の数の返り値を返すことができます。この例では、f() はその出力として [1, 2] を返します。

    var a, b;
    [a, b] = f();
    document.write ("A is " + a + " B is " + b + "<br>\n");

    621 = :

    >>618
    素朴な疑問だが

    > 配列に似た構文を使ってその結果を返します
    とあるが、 配列そのものを返しているようにも見えるが

    「配列に似た構文」とは関数の中の return ではなく
    代入の左辺を指すのではないのか?

    var a = f();
    var [b, c] = f();

    があるとき a は配列になるのでは?

    function f() {
    return new Array(1, 2);
    }
    だったら?

    623 = :

    >>621
    > 「配列に似た構文」とは関数の中の return ではなく
    > 代入の左辺を指すのではないのか?
    「配列に似た構文を使って」だから文章的には矛盾はないと思うけど...
    あなたの理解で合ってる

    624 = :

    指定した関数を何回呼ばれたか分かるようにするライブラリみたいのありますか?

    625 = :

    JavaScriptプロファイラ で検索

    626 = :

    >>624

    http://ideone.com/HVfnDI

    function foo() { } /* カウントしたい関数 */


    var count_hash = {};

    function callcounter(func) {
     count_hash[func.name] = 0;
     return function() {
      count_hash[func.name] += 1;
      return func.apply(this, arguments);
     };
    }

    foo = callcounter(foo); /* fooをクロージャと差し替え */

    for (var i = 0; i < 100; i++) {
     foo();
    }

    console.log(count_hash.foo); // 100

    628 = :

    >>627
    ・counter がグローバル変数なのでよくない

    629 = :

    >>628
    counterはローカル変数ねw

    630 = :

    >>629
    var ついてないけど、ローカル変数?
    (多分、>>626も同じ事を思ってるよ)

    631 = :

    >>630
    たんなるつけ忘れってことw

    632 = :

    >>627
    このインターフェイスでどうやってfooを置き換えられると?

    633 = :

    寝てないからなぁw

    メソッドが属するオブジェクトも
    引数に入れてやってください。

    634 = :

    俺ならこうする
    カウントしたい関数=test();
    function test(){}

    xxxx=0;//global
    function test(){console.log(xxxx++)}

    これじゃイカンのか?態々getterみたいなことせんでも

    636 = :

    countTest = 0;
    function test(){
    countTest++;
    console.log("test");
    }
    test();
    test();
    console.log(countTest + "回呼ばれました");

    637 = :

    だめだ わかってないなぁ

    638 = :

    ×わかってない
    ◎質問者の説明不足

    639 = :

    http://jsbin.com/yufumaqe/1/edit

    ありがとうございます
    高階関数?を使ってこんな感じで出来ました
    lodash最高ですね

    _.mixin({
    countable: function(fn){
    var wrapper = function wrapper(){
    var result = fn.apply(this,arguments);
    wrapper.counter++;
    return result;
    };
    wrapper.counter = 0;
    wrapper.getCounter = function() {
    return wrapper.counter;
    };
    return wrapper;
    }
    });

    function test(s){
    console.log(s);
    }

    var countableTest = _.countable(test);

    countableTest('hoge');
    countableTest('hoge');
    countableTest('hoge');
    console.log(countableTest.getCounter());

    641 = :

    >>639
    誰もlodashに触れてないのにどこから出てきたんです?

    642 = :

    最初から触れるとレス貰えなくなるから学習したんでしょ

    644 = :

    >>640
    これグローバルに無い関数は計測出来ないじゃん0点
    プロファイラで計測する以外に方法はない

    645 = :

    >>641
    高階関数とlodashの親和性は高いので。
    もちろんlodash使わなくても出来ますよd(^_^o)

    646 = :

    結局、>>626と同じじゃねーかw なんでこんなに手間増やしてベンチ激遅にしなきゃらんのだw アホ過ぎる

    647 = :

    今の時代はベンチ速度よりも、
    メンテンス性の方が重要視されるからだよ。

    648 = :

    何をとるかは目的によるのであって、時代は関係ないねw

    649 = :

    いや関係有るよ。正確に言えばパソコンの性能だが。
    ほんの15年前まで、速度が必要な所にJavaScriptを
    使うこと自体ありえない話だった。

    速度が気になる? じゃあJavaScriptなんかやめろよ。
    これが常識だった。

    650 = :

    JavaScriptのリクエスト数の方が問題になるからねぇ。

    目的がリアルタイムゲーム以外なら、
    JavaScriptの実行速度を考慮する必要はない
    という結論でいいんじゃないか。


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について