2012年11月23日金曜日

開発環境

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

その他参考書籍

2.

コード(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! $last is also here!\n";
  } else {
    print "Hi $name! You are the first one here!\n";
  }
  $last = $name;
}

greet("Fred");
greet("Barney");

入出力結果(Terminal)

$ ./sample.pl
Hi Fred! You are the first one here!
Hi Barney! Fred is also here!
$

ちなみにJavaScriptの場合。

コード(TextWrangler)

var greet = (function(){
  var last;
  return function(name){
    var result = "";
    if(last){
      result = "Hi " + name + "! " + last + " is also here!";
    } else {
      result = "Hi " + name + "! You are the first one here!";
    }
    last = name;
    return result;
  }
})();
var result = greet("Fred") + "\n" + greet("Barney");
$('#pre0').text(result);




pythonの場合。

sample.py

コード(TextWrangler)

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

class greet:
    last = None
    def __init__(self, name):
        self.name = name
        if greet.last:
            print("Hi {0}! {1} is also here!".format(name, greet.last))
        else:
            print("Hi {0}! You are the first one!".format(name))
        greet.f(self)
    def f(self):
        greet.last = self.name

greet('Fred')
greet('Barney')

入出力結果(Terminal)

$ ./sample.py
Hi Fred! You are the first one!
Hi Barney! Fred is also here!
$

メモ: Pythonではやり方がすぐに思いつかなかったので、クラスを作っちゃうことに。。

0 コメント:

コメントを投稿