開発環境
- 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 コメント:
コメントを投稿