bnezの日記: FizzBuzz
FizzBuzz問題で遊ぶ。 拡張性重視版。
#! /usr/bin/perl
sub make_fizzbuzz(@)
{
my $table = \@_;
sub {
my $input = shift;
join ' ', map { $_->[1] } grep { $_->[0]->($input) } @$table or $input;
};
}
FizzBuzz問題で遊ぶ。 拡張性重視版。
#! /usr/bin/perl
sub make_fizzbuzz(@)
{
my $table = \@_;
sub {
my $input = shift;
join ' ', map { $_->[1] } grep { $_->[0]->($input) } @$table or $input;
};
}
使用者が複数の対象に同一の操作を行う状況を考える。操作に対する振る舞いが対象によって異なっているとき、この性質を多態性(polymorphism)という。C++は、動的多態性(dynamic polymorphism)と静的多態性(static polymorphism)の2つを扱う能力を備える。ポリシクラスは、静的多態性の実装手段のひとつである。
動的多態性は、実行時に解決される多態性である。C++では仮想関数が主な実装手段である。以下に例を示す。
class Base
{
public:
virtual ~Base() throw() {}
virtual void func() = 0;
};
Perlのハッシュ内の値のうち、''を'-'に書き換える方法あれこれ。
お試し用プログラム。@FILLHERE@に中身を入れることで完全なPerlスクリプトになる。
#! /usr/bin/perl
use strict;
use warnings;
use integer;
# main
{
my $h = { a => 'foo', b => '', c => 'bar' };
@FILLHERE@
print join(', ', map { $_ . ' => ' . $h->{$_} } sort keys %$h), "\n";
}
0;
C++再履修 の続き.下記一通り読了.
CおよびC++のconstとvolatileは,型やオブジェクトの宣言に付加することでその意味の一部を変更する修飾子である.両者をまとめてcv修飾子などと呼ぶ.
オブジェクトを修飾したときの以後の文脈あるいは言語実装系への指示は次の通り.
見方を変えれば,cv修飾子は次のようなオブジェクトに対して付加することができる,あるいは付加する必要がある,と考えるとよい.
C++話.delete this,すなわち「自殺するクラス」について.
delete thisという操作は,不正ではないが注意深く行う必要がある.
ごく単純なコードは次のようになる.
(1)
class A
{
public:
void suicide() { delete this; }
};
suicideは自分自身を破壊するpublicな非静的メンバ関数で,自らの意志で自 殺する際に他のメンバ関数から呼ばれる.あるいは,オブジェクト自身の手で は自殺が行われない場合に,自殺を行わせるために外部から呼び出される.
今日のNHKスペシャル「老化に挑む#2: 寿命はもっと延びる」より,長寿達成の方法を4つ.
誰にでもわかる平易な言葉で,簡潔に,的確に.
難解な用語を用いたなら,その用語に対しても同様のチェックを.
従うレベル(レベル1)は、新しいスキルに触れ始めた初期段階である。この段階では、成功するひとつの手順を学ぶ。必要とされるものはひとつだけの明解な指示であり、有効な教材は手順を列挙した分厚いマニュアルである。
取り外すレベル(レベル2)では、従うレベルで学んだ各手順の能力とその限界を知る。成功する手順が複数並んでいるときに、各々の性質を判断して適切なものを選択することを学ぶ。
計算機科学者とは、壊れていないものを修理する人々のことである