素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: twitter: @javascripter にどうぞ。

2008-09-01から1ヶ月間の記事一覧

関数を返す関数と数字

追記:ページ詳細 - 関数を返す関数と数字 - 素人がプログラミングを勉強するブログ - livedoor クリップを参考に、to_nを修正 高階関数を使えば、0以上の整数を表現できるような気がしたのでやってみる。 0が0で、(function() 0)が1。 大きい数を入れるとto…

ポインタと文字列、戻り値

c

追記:コメントを元に修正 ジャンケンゲーム - 素人がプログラミングを勉強するブログで、strcatが文字列を返せば楽なのにと書いたけど、ポインタを渡さなきゃいけない理由がわかった。まず、文字列はプリミティブではないので、関数が文字列を返すときは配…

ジャンケンゲーム

c

追記:メッセンジャーでprintHandイマイチとコメントを貰ったので直した。 strcatとか初めて使ったけど、なんで値入れるためのポインタを渡すようになってるんだろ。関数の戻り値が文字列を返してくれればいいのに。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h></time.h></string.h></stdlib.h></stdio.h>…

DocumentFragmentに対するgetElementsBy.*Name

DocumentFragmentには、getElements系のメソッドがなくて、firstChildとかに対して直接指定しなければいけない。 querySelectorとquerySelectorAllはDocumentFragmentに対して使うことができるので、下のようにすれば使うことができる。 ただし、戻り値は静…

Node#setUserData、Node#getUserDataの使い方(jQuery.dataみたいなもの)

setUserDataとgetUserDataが便利。 var o = {}; o[document.body] = 12345; みたいなことができなくて困ってたのだけど、こういう場合はsetUserDataとgetUserDataが使える。 基本的な使い方は、 document.body.setUserData("key", {value: 123}, null); docu…

curry化、setTimeout

function curry(fn){ var args = [], self = this; setTimeout(function(){ fn.apply(self,args); },0); return function(){ Array.prototype.push.apply(args,arguments); return arguments.callee; } } curry(console.log)(1)(2,3)(4)(5); 非同期になって…

range、イテレータ

yield使えない環境でも、下みたいに自分で用意すればできる。 function range(min, max, exclude) { return { next: exclude ? function() { if (min < max) return min++; throw StopIteration }: function() { if (min <= max) return min++; throw StopIt…