2012年11月24日土曜日

開発環境

『初めてのPerl 第6版』(Randal L. Schwartz, Tom Phoenix, brian d foy 共著、近藤 嘉雪 訳、オライリー・ジャパン、2012年、ISBN978-4-87311-567-2) の4章(サブルーチン)、4.12(練習問題)5を解いてみる。

その他参考書籍

5.

コード(TextWrangler)

sample.pl

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use 5.016;
binmode STDIN, ':utf8';
binmode STDOUT, ':utf8';

sub greet{
  state @last;
  my $name = shift;
  if(@last){
    print "Hi $name! I've seen: @last\n";
  } else {
    print "Hi $name! You are the first one here!\n";
  }
  push @last, $name;
}

for(qw(Fred Barney Wilma Betty)){
  greet($_);
}

入出力結果(Terminal)

$ ./sample.pl
Hi Fred! You are the first one here!
Hi Barney! I've seen: Fred
Hi Wilma! I've seen: Fred Barney
Hi Betty! I've seen: Fred Barney Wilma
$

ちなみにJavaScriptの場合。

コード(TextWrangler)

var greet = (function(){
  var last = [];
  return function(name){
    var result = "";
    if(last){
      result = "Hi " + name + "! I've seen: " + last.join(" ");
    } else {
      result = "Hi " + name + "! You are the first one here!";
    }
    last.push(name);
    return result;
  }
})();
var result = "";
var names = ["Fred", "Barney", "Wilma", "Betty"];
for(var i = 0 ; i < names.length; i++){
  result += greet(names[i]) + "\n";
}
$('#pre0').text(result);




pythonの場合。

sample.py

コード(TextWrangler)

#!/usr/bin/env python3.3
#-*- coding:utf-8 -*-

class greet:
    last = []
    def __init__(self, name):
        self.name = name
        if greet.last:
            print("Hi {0}! I've seen: {1}".format(name, " ".join(greet.last)))
        else:
            print("Hi {0}! You are the first one!".format(name))
        greet.f(self)
    def f(self):
        greet.last.append(self.name)

for name in ["Fred", "Barney", "Wilma", "Betty"]:
    greet(name)

入出力結果(Terminal)

$ ./sample.py
Hi Fred! You are the first one!
Hi Barney! I've seen: Fred
Hi Wilma! I've seen: Fred Barney
Hi Betty! I've seen: Fred Barney Wilma
$

0 コメント:

コメントを投稿