開発環境
- Microsoft Windows 8 Pro 64bit 日本語 (OS)
- Microsoft Visual Studio Express 2012 for Windows Desktop (IDE)
- プログラミング言語: C#
『初めてのC# 第2版』(Jesse Liberty+Brian MacDonald著、日向俊二訳、オライリー・ジャパン、2006年、ISBN978-487311-294-7)の 第8章(配列)10.9(練習問題)問題10-3を解いてみる。
その他参考書籍
問題10-3.
コード
using System;
using System.Collections.Generic;
class Dog
{
private int weight;
private string name;
public Dog(int weight, string name)
{
this.weight = weight;
this.name = name;
}
public int Weight
{
get { return weight; }
set { weight = value; }
}
public string Name
{
get { return name; }
set { name = value; }
}
}
class Tester
{
public void Run()
{
Dog milo = new Dog(26, "Milo");
Dog frisky = new Dog(10, "Frisky");
Dog laika = new Dog(50, "Laika");
Dog[] dogs = { milo, frisky, laika };
string[][] awards = new string[dogs.Length][];
awards[0] = new string[3];
awards[1] = new string[1];
awards[2] = new string[2];
awards[0][0] = "award1";
awards[0][1] = "award2";
awards[0][2] = "award3";
awards[1][0] = "award4";
awards[2][0] = "award5";
awards[2][1] = "award6";
for (int i = 0; i < dogs.Length; i++)
{
Console.WriteLine("Name:{0} Weight:{1}の獲得した賞一覧", dogs[i].Name, dogs[i].Weight);
for (int j = 0; j < awards[i].Length; j++)
{
Console.WriteLine(awards[i][j]);
}
}
// 本書には登場してないけどディクショナリーのほうが適してるような気がしたので
Console.WriteLine("ディクショナリーを使った場合");
Dictionary<Dog, string[]> awardDict = new Dictionary<Dog, string[]>();
awardDict.Add(dogs[0], new string[] { "award1", "award2", "award3" });
awardDict.Add(dogs[1], new string[] { "award4" });
awardDict.Add(dogs[2], new string[] { "award5", "award6" });
foreach (Dog dog in dogs)
{
Console.WriteLine("Name:{0} Weight:{1}の獲得した賞一覧", dog.Name, dog.Weight);
foreach (string award in awardDict[dog])
{
Console.WriteLine(award);
}
}
}
static void Main()
{
Tester t = new Tester();
t.Run();
}
}
入出力結果(Console Window)
Name:Milo Weight:26の獲得した賞一覧 award1 award2 award3 Name:Frisky Weight:10の獲得した賞一覧 award4 Name:Laika Weight:50の獲得した賞一覧 award5 award6 ディクショナリーを使った場合 Name:Milo Weight:26の獲得した賞一覧 award1 award2 award3 Name:Frisky Weight:10の獲得した賞一覧 award4 Name:Laika Weight:50の獲得した賞一覧 award5 award6 続行するには何かキーを押してください . . .
ちなみにJavaScriptの場合。
コード(TextWrangler)
var result = "";
var Dog = function(weight, name){
var weight = weight;
var name = name;
this.get_weight = function(){
return weight;
};
this.set_weight = function(value){
weight = value;
};
this.get_name = function(){
return name;
};
this.set_name = function(value){
name = value;
};
};
var milo = new Dog(26, "Milo");
var laika = new Dog(10, "Laika");
var frisky = new Dog(50, "Frisky");
var dogs = [milo, laika, frisky];
var awards = [["award1"], ["award2", "award3", "award4"], ["award5", "award6"]];
for(var i = 0; i < dogs.length; i++){
result += "Name:" + dogs[i].get_name() + " Weight:" + dogs[i].get_weight() + "の獲得した賞一覧\n";
for(var j = 0; j < awards[i].length; j++){
result += awards[i][j] + "\n";
}
}
$('#pre0').text(result);
pythonの場合。
sample.py
コード(TextWrangler)
#!/usr/bin/env python3.3
# -*- coding: utf-8 -*-
class Dog:
# pythonではprivateは作れない
# 先頭に下線を付けておく
def __init__(self, weight, name):
self._weight = weight
self._name = name
# プロパティっぽいものを名前を動詞にして定義
def get_weight(self):
return self._weight
def set_weight(self, weight):
self._weight = weight
def get_name(self):
return self._name
def set_name(self, name):
self._name = name
def __str__(self):
return "Name:{0} Weight:{1}".format(self._name, self._weight)
milo = Dog(26, "Milo")
frisky = Dog(10, "Frisky")
laika= Dog(50, "Laika")
dogs = [milo, frisky, laika]
awards = [["award1","award2","award3"],
["award4"],
["award5", "award6"]]
i = 0
for dog in dogs:
print("Name:{0} Weight:{1}の獲得した賞一覧".format(
dog.get_name(), dog.get_weight()))
for x in awards[i]:
print(x)
i += 1
print("ディクショナリーを使用")
award_dict = {milo:["award1","award2","award3"],
frisky:["award4"],
laika:["award5", "award6"]}
for dog, awards in award_dict.items():
print("Name:{0} Weight:{1}の獲得した賞一覧".format(
dog.get_name(), dog.get_weight()))
for award in awards:
print(award)
入出力結果(Terminal)
$ ./sample.py Name:Milo Weight:26の獲得した賞一覧 award1 award2 award3 Name:Frisky Weight:10の獲得した賞一覧 award4 Name:Laika Weight:50の獲得した賞一覧 award5 award6 ディクショナリーを使用 Name:Frisky Weight:10の獲得した賞一覧 award4 Name:Milo Weight:26の獲得した賞一覧 award1 award2 award3 Name:Laika Weight:50の獲得した賞一覧 award5 award6 $
0 コメント:
コメントを投稿