Class programming with Euphoria
- Posted by jmduro Oct 24, 2021
- 1007 views
Wouldn't it be nice to use Phix-like class programming with Euphoria ?
Let's take this example code (test_classes_orig.oex):
include std/datetime.e include std/console.e function get_years(atom secs) atom days = floor(secs/86400) return floor(days/365.25) end function class person datetime birth_date sequence birth_place sequence mother_tongue procedure describe(sequence params) atom secs = diff(self.birth_date, now()) printf(1, "\nHello! I speak %s.\n", {self.mother_tongue}) if length(params) then printf(1, "I am %d years old. I was born in %s (%s).\n", {get_years(secs), self.birth_place, params[1]}) else printf(1, "I am %d years old. I was born in %s.\n", {get_years(secs), self.birth_place}) end if end procedure end class sequence englishman = new(person) englishman.birth_date = datetime:new(2010, 5, 14) englishman.birth_place = "Liverpool" englishman.mother_tongue = "english" sequence frenchman = new(person) frenchman.birth_date = datetime:new(1960, 8, 10) frenchman.birth_place = "Thionville" frenchman.mother_tongue = "french" sequence german = new(person) german.birth_date = datetime:new(1993, 2, 23) german.birth_place = "Munich" german.mother_tongue = "german" englishman.describe({"Merseyside"}) frenchman.describe({"Lorraine"}) german.describe({"Bavaria"}) maybe_any_key()
Jean-Marc