万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

Boo Language Advent Calendar 2012 8日目 Title:「クラスのJSONっぽい便利な使い方」

URL: http://atnd.org/events/34622
上記本のC#とBooの比較が、中国語サイトに載せられてます。誤りも微妙に修正されていました。しかし読みにくい。
URL: http://www.cnblogs.com/2018/archive/2012/10/10/2623630.html

その中の興味深い例を紹介します。

C#

var emp = new Employee{ Name = "foo", Id = 15};

・Boo

emp = Employee(Name: "foo", Id: 15)

まず、employeeって単語の紹介。
:研究社の和英辞典より引用

employee
音節em・ploy・ee 発音記号/ɪmpl`ɔɪ〓ː, em‐, ‐plˈɔɪiː/
【名詞】【可算名詞】
被雇用者,従業員 (⇔employer).

今回。この準備のために、こんなクラスを準備します。
C#で書きましたが、以下のようになります。
GameObjectに特に貼り付けたりしないので、MonoBehaviorは"継承していません"。

public class Employee
{
    public string Name { get; set; }
    public int Id { get; set; }
}

こうすれば、呼べます。
※「Plugins」ディレクトリを作って入れて下さい。
→ さもないとBooから後々呼べません。(これ自体Booで書いてもOK)

C#ではこう書きました。
・EmployeeTestCS.cs(C#)

using UnityEngine;

public class EmployeeTestCS : MonoBehaviour
{
    void Awake ()
    {
        var emp = new Employee{ Name = "foo", Id = 15};
        Debug.Log (emp.Name);
        Debug.Log (emp.Id);
    }
}

→結果
foo
15

・EmployeeTestBoo.boo(Boo)
→ Booではこうです。

import UnityEngine

class EmployeeTestBoo (MonoBehaviour):

    def Awake ():
        emp = Employee(Name: "foo", Id: 15)
        Debug.Log(emp.Name)
        Debug.Log(emp.Id)

JSONっぽい便利な使い方ってのは、
Employee(Name: "foo", Id: 15)のように、「:」で変数と値をマッピングして「,」で区切っているだけってのを意味しました。