Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $someone = {"name" -> "Fred", "gender" -> "Male", "age" -> 25};
- "name" /. $someone
- (* "Fred" *)
- "age" /. $someone
- (* 25 *)
- $person = person[name_, gender_, age_];
- $someoneElse = person["Fred", "Male", 25];
- $someoneElse /. $person :> name
- (* "Fred" *)
- $someoneElse /. $person :> name ~~ " (" ~~ gender ~~ ")"
- (* "Fred (Male)" *)
- personName[$person] := name
- personGender[$person] := gender
- personAge[$person] := age
- personName @ $someoneElse
- (* Fred *)
- personAge @ $someoneElse
- (* 25 *)
- SetAttributes[assembleName, HoldAll]
- assembleName[p_Symbol, s_Symbol] :=
- Context[p]~~SymbolName[p]~~StringReplace[SymbolName[s], f_~~r___ :> ToUpperCase[f]~~r] //
- Symbol
- defineAccessors[f:w_[Verbatim[Pattern][_, Blank[]]..]] :=
- Cases[f, Verbatim[Pattern][s_, Blank[]] :> (Hold[#[f], s] &@ assembleName[w, s])] /.
- Hold[l:s_[___], r_] :> (l := r; s)
- defineAccessors[movie[name_, year_, quote_]]
- (* {movieName, movieYear, movieQuote} *)
- randomMovie[] :=
- RandomChoice @ {
- movie["2001: A Space Odyssey",1968,"Watch out! He's got a bone!"]
- , movie["Prometheus",2012,"Here, cobra, cobra... Gimme a hug!"]
- , movie["Star Wars: The Phantom Menace",1999,"I say we nuke the JJB from orbit..."]
- , movie["Firefly",2002,"...Sniff..."]
- }
- $someMovie = randomMovie[];
- $someMovie // movieName
- (* "2001: A Space Odyssey" *)
- $someMovie // movieYear
- (* 1968 *)
- $someMovie // movieQuote
- (* "Watch out! He's got a bone!" *)
- {city, temperature, pressure} = {"London", 18, 1005};
- res = obj["London", 18, 1005]
- obj[a___]["city"] := obj[a][[1]]
- obj[a___]["temperature"] := obj[a][[2]]
- obj[a___]["pressure"] := obj[a][[3]]
- res["city"]
- res["temperature"]
- res["pressure"]
- yourFunc[] := Module[{obj},
- obj["this"] = "lala";
- obj["that"] = 98;
- obj];
- bla = yourFunc[];
- bla["this"]
- bla["that"]
- SetAttributes[yourFunc2, HoldAll];
- yourFunc2[out1_][arg_] := (out1["bla"] = 98; out1["blo"] = 98 - arg;
- out1)
- yourFunc2[x][23]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement