最近のプログラミング言語には、変数名や関数名に日本語が使えるものがあります。たとえば、iPhone や Mac のプログラムを作ることができる Swift という言語では、予約語以外なら平気で日本語が使えてしまいます。だったらギャルが書いたみたいなソースコードも作れてしまうのではないかと思ってやってみました。
先に言っておきますが、ギャル感が古くさいのは放っておいてください。
例えば、こんな構造体を用意します。
struct 山田学園のせーと { var なまぇ: もじ var がくねん: 学年 var せーべつ: 性別 var おかね: 金額 var めっせーじ = [(山田学園のせーと, もじ)]() init(なまぇ: もじ, がくねん: 学年, せーべつ: 性別, おかね: 金額 = 0) { self.なまぇ = なまぇ self.がくねん = がくねん self.せーべつ = せーべつ self.おかね = おかね } }
もじ、学年、性別は構造体の外側でこんな風に定義しておきます。
typealias 学年 = UInt8 typealias 金額 = UInt32 typealias もじ = String enum 性別 { case ぢょし case だんし case ほか case わからない }
学年は堅実に 8 ビットの符号なし整数を使っていますが、金額に 32 ビット使ってるあたりに欲が見えます。続いて構造体にプロパティやファンクションを追加します。
struct 山田学園のせーと { var なまぇ: もじ var がくねん: 学年 var せーべつ: 性別 var おかね: 金額 var めっせーじ = [(山田学園のせーと, もじ)]() init(なまぇ: もじ, がくねん: 学年, せーべつ: 性別, おかね: 金額 = 0) { self.なまぇ = なまぇ self.がくねん = がくねん self.せーべつ = せーべつ self.おかね = おかね } // おかねの(ある・なし)はんてー var おかねないよー: Bool { get { return おかね == 0 } } // おかねをぁげる。たりたらニコニコ、たりなかったらぶんすか mutating func おかねぁげる(きんがく: 金額, var 誰に: 山田学園のせーと) -> Bool { if おかね >= きんがく { おかね -= きんがく 誰に.おかね += きんがく return true } else { return false } } // メッセージをもらってめっせーじ帳にかく mutating func にめっせーじおくる(めっせーじ: もじ, 誰から: 山田学園のせーと) { めっせーじ帳.append((誰から, めっせーじ)) } }
これを使って次のように書くことができます。
var ぁたし = 山田学園のせーと(なまぇ: "ぁたし", がくねん: 2, せーべつ: .ぢょし) var かとー = 山田学園のせーと(なまぇ: "加藤", がくねん: 2, せーべつ: .わからない, おかね: 10000) if ぁたし.おかねないよー { if かとー.おかねぁげる(2000, 誰に: ぁたし) { かとー.にめっせーじおくる("ぁりがと", 誰から: ぁたし) } else { かとー.にめっせーじおくる("ちっ", 誰から: ぁたし) } }
これ、普通にビルドが通ってしまうんです。もちろん動きます。
ただ、書いてみて分かりましたが、日本語入力のオンオフが頻繁にあって面倒です。やはり実際の開発で使うのは無理があります。