「年齢を上げる」をどう表現するか

This entry was posted by on Sunday, 15 June, 2008

とりあえずこんな感じか?

C me.age++; Java me.addAge(1); Objective-C [self AddAgeBy: 1]; lisp (setf (age me) (+1 (age me))) Ocaml let me = {me with age = me.age + 1};; Haskell modifyIORef (age me) (+1) Erlang me ! {add_age, 1} Brainf*ck +

おおむねの言語は C スタイルか Java スタイルで書ける気がするので大して面白くはならない気がする(たとえば Ruby には ++ はないのだがこの辺は C の変種と言いきってよかろう)。そういえば smalltalk 系列の記法を知らない。

3 Responses to “「年齢を上げる」をどう表現するか”

  1. shiro

    lispなら (incf (age me)) ですかな。
    unlambdaで一般的なincを書くのはチャレンジかも。

  2. sumim

    Smalltalk も Objective-C の [ ] の中と一緒で、

    self AddAgeBy: 1

    でいいと思います。細かいことを言うと Smalltalk の(Objective-C も)メソッド名は小文字で始める慣習があるので

    self addAgeBy: 1

    のほうがいいかもしれません。余談ですが Squeak の Smalltalk には #at:incrementBy: というメソッドがあるので

    self at: #age incrementBy: 1

    と書く手もあります。これは、Ruby に意訳すると、

    self[:age] += 1

    となります。

  3. 向井

    incf は、そういうものがあった気がしたんですが名前が思い出せませんでした……。
    Objective-C もメソッド名が小文字から始まる習慣は覚えていたんですがおかしいですね。 at:incrementBy: は知りませんでした。
    おふたりともありがとうございます。