Difference between revisions of "clasp (日本語)"
(Initial commit.) |
m |
||
Line 1: | Line 1: | ||
4 行のコードによる Lua 用の最小クラスライブラリ: https://github.com/evolbug/lua-clasp | 4 行のコードによる Lua 用の最小クラスライブラリ: https://github.com/evolbug/lua-clasp | ||
− | |||
<source lang="lua"> | <source lang="lua"> | ||
Line 54: | Line 53: | ||
{{#set:Keyword=Class}} | {{#set:Keyword=Class}} | ||
[[Category:Libraries (日本語)]] | [[Category:Libraries (日本語)]] | ||
+ | == そのほかの言語 == | ||
+ | {{i18n (日本語)|clasp}} |
Latest revision as of 01:02, 16 December 2019
4 行のコードによる Lua 用の最小クラスライブラリ: https://github.com/evolbug/lua-clasp
class = require "clasp"
-- 基本クラス
Vector = class {
isVector = true; -- 静的値
init = function(self, x, y) -- 関数の初期化子
self.x = x
self.y = y
end;
}
a = Vector(10, 10)
print('Vector:', a.x, a.y, a.isVector) -- "Vector: 10 10 true"
-- 継承
Vector3 = Vector:extend {
init = function(self, x, y, z) -- 関数オーバーライド
Vector.init(self, x, y) -- スーパークラスのメソッド呼び出し
self.z = z
end;
}
b = Vector3(1, 2, 3)
print('Vector3:', b.x, b.y, b.z, b.isVector) -- "Vector3: 1 2 3 true"
-- メタメソッド
Point = class {
init = function(self, x, y)
self.x = x
self.y = y
end;
__ = { -- メタメソッドのテーブル
tostring = function(self)
return 'Point('..tostring(self.x)..', '..tostring(self.y)..')'
end;
};
}
c = Point(15, 25)
print(c) -- "Point(15, 25)"