前の月 / 次の月 / 最新

~matubara/ChangeLog / 2008-01移動しました

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12

2008-01-28 Mon

That or Which [lx][net]

<http://www.chass.utoronto.ca/~cpercy/courses/6362-lee.htm>
・prescriptive には、that は限定用法のみ、which は非限定用法のみ。
・現在の日常の用法では、カンマやポーズがあれば非限定、prescriptive の傾向も残る

(3) I want her to give me back the book that I loaned her a year ago.
(4) Kumar will never return his gold medal, which he believes he won fairly.

2008-01-21 Mon

へんな立体―脳が鍛えられる「立体だまし絵」づくり [math][book]

<http://www.amazon.co.jp/dp/441680752X>
書店で見かけた面白いパズル(?)の本。
杉原厚吉氏の『へんな立体―脳が鍛えられる「立体だまし絵」づくり』という本です。
この本には、一見絵にしか描けないようにみえるけど、実は作れる、という立体がたくさん載せられています。
ほとんど全編絵なので、子供から大人まで楽しめるのではないでしょうか。

# 関係ないですが杉原厚吉氏は情報理工学系研究科の教授の一人です。

2008-01-15 Tue

ruby-1.8 では同名でスコープの違うローカル変数を作れない [ruby]

<http://www.ruby-lang.org/ja/man/?cmd=view;name=%CA%D1%BF%F4%A4%C8%C4%EA%BF%F4#a.a5.ed.a1.bc.a5.ab.a5.eb.ca.d1.bf.f4>

ローカル変数スコープ(クラス、モジュー ル、メソッド定義の本体)における小文字で始まる識別子への最初 の代入はそのスコープに属するローカル変数の宣言になります。


ruby では最初の代入が変数宣言となるので、
広いスコープで使われた変数名を、
狭いスコープで別の変数の名前として使うことができない。
なぜなら、2回目の代入は(宣言なしの)単なる代入として処理されるから。

同名の変数を作るのがそもそも混乱のもとになるというのは一理あるので、
この仕様がひどいとはいえない。
「一度使われた名前は別の目的に使うことができない」という原則はそれなりに合理的だ。

しかし、

x = 10
[1,2,3].each { |x| }
puts x

1
2
3
3

というように、ブロック引数内での変数さえも同じように振る舞うのはなんか嫌だ。
上記では、

|x|

の x が外の x だとみなされている。
これは合理的ではない。
もし、「xを1,2,3と次々と書き換える」ことを意図するなら

[1,2,3].each { |y| x=y }

と、ほとんど変わらない手間で、より明瞭に書けるからだ。

ruby-1.9 では
このようなブロック内の変数はブロックローカル変数として独立した変数になるようになった。
http://eigenclass.org/hiki/Changes+in+Ruby+1.9#l7

(2008-01-20T22:40:42+0900)
そもそも、ruby-1.8 のローカル変数スコープはメソッドごとにひとつづつしかなかった。
ruby-1.9 ではブロックローカル変数スコープが新設され、
ブロック引数はそのスコープを作ることになった。

……という理解が正しいようだ。

2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2009-02-01 00:57

Powered by chalow
inserted by FC2 system